[英]MutationObserver to detect change in null child element
我有一個 iframe 正在呈現來自另一個域的內容。 顯然我無法從其他域訪問contentDocument
(返回null
)。 但是當用戶對呈現的 iframe 執行操作時,它會重定向回我的域。 因此,那時我可以閱讀該文檔。 基本上一旦 contentDocument 不是null
,我想執行一個動作。
目前,如果 iframe 的孩子(在這種情況下,它的contentDocument
發生變異......
window.onload = () => {
setTimeout(initializeObserver, 2000)
}
const initializeObserver = () => {
const iframe = document.getElementById('my_iframe')
observer.observe(
iframe,
{
attributes: true,
childList: true,
subtree: true
}
)
}
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if(mutation.addedNodes.length) {
alert("SOMETHING HAPPENED!")
}
})
})
但是,即使添加了子節點並且 iframe 中的元素發生更改,警報也不會觸發。 我讀過很多例子,但也許我仍然想念它是如何工作的。 有人可以幫助解釋為什么這個觀察者沒有觸發突變嗎?
提前致謝
當<iframe>
中的瀏覽上下文更改其location
時,包含<iframe>
的src
屬性不會更改,因此您的頁面看不到任何差異。
由於您顯然控制了另一個頁面,因此您可以做的就是將消息發布到您的主頁。
然后你只需要聽那個消息,你就知道你的框架已經回來了。
// in main
addEventListener("message", (evt) => {
if( evt.origin === location.origin && evt.data === "I'm back" ) {
// your page came back
}
});
// in framed page
top.postMessage( "I'm back", location.origin );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.