HTML ページでは、要素のスタイルの変更 (マージン、パディング、高さなど)、他の要素の挿入または削除、または他の要素のスタイルの変更など、さまざまな理由で要素の位置が変更される可能性があります。
jQuery ダイアログが常にアンカーの隣に配置されるようにする必要があるため、アンカーが移動するとダイアログも移動します。ただし、ダイアログが表示されているページを制御しません (JS を動的に挿入します)。MutationObserver を使用して要素 (およびそのすべての親要素) の offsetTop プロパティへの変更を監視できると考えましたが、offsetTop の変更によってミューテーション イベントが発生するようには見えません。
offsetTop の変更によってミューテーション イベントが発生しないことを確認したり、オフセット トップを監視する方法を教えてもらえますか?
あるいは、ダイアログがアンカーにとどまるようにするための他の手法がある場合、私はすべて耳を傾けます-ただし、ページ自体は制御せず、ダイアログのみを制御するという制約に注意してください:)
フィドル:
次のフィドルでは、「マージン」ボタンをクリックすると、アンカー要素のマージントップが変更され、style
属性が変更され、再配置がトリガーされます。ただし、offsetTop 属性が変更されていても、他のボタンをクリックしても再配置されません。position()
関数を呼び出すには、他の 2 つのボタンが必要です。
http://jsfiddle.net/ustmssx7/2/
制約
私は HTML や Javascript を制御していません。私の JS は他の人のページに挿入されているため、できることは非常に限られています。
後退する
私のフォールバック ソリューションは、window.anchor.offsetTop
100 ミリ秒ごとにポーリングし、変更された場合は再配置することです。ただし、ポーリングはうまくいかないので、代わりにイベントに反応できれば、はるかに良いでしょう。