diff --git a/src/main.js b/src/main.js index ddd7e8d..8ea41e3 100644 --- a/src/main.js +++ b/src/main.js @@ -100,13 +100,13 @@ function start() { const el = findAnchorElement(); if (el) { const rect = el.getBoundingClientRect(); - dialog.setMode('anchored', { canAnchor: true }); - dialog._positionAnchored(rect); - // observe - const ro = new ResizeObserver(() => { - if (prefs.mode === 'anchored') dialog._positionAnchored(el.getBoundingClientRect()); - }); - ro.observe(el); + dialog.setMode('anchored', { canAnchor: true, rect: rect }); + if (typeof ResizeObserver !== 'undefined') { + const ro = new ResizeObserver(function () { + if (prefs.mode === 'anchored') dialog._positionAnchored(el.getBoundingClientRect()); + }); + ro.observe(el); + } anchorError = null; return; } diff --git a/src/ui.js b/src/ui.js index fee5988..0744ebd 100644 --- a/src/ui.js +++ b/src/ui.js @@ -135,6 +135,7 @@ export class Dialog { } _positionAnchored(rect) { + if (!rect) return; // defensive: setMode may be called without a rect const dialogRect = this.root.getBoundingClientRect(); let top = rect.top - dialogRect.height - 8; if (top < 8) top = 20;