单击 iframe 的 href 时,iframe 的突变观察器被删除?

mutation observer of iframe is removed when click a href of iframe?

在 iframe 中附加一个突变观察器后,在 iframe 中按下 <a href=''> 按钮是否会删除突变观察器?

我写了代码让变异观察器检测body元素的变化,但它没有检测到。请问是我代码写错了还是我上面的想法是对的

如果mutation observer被删除了,是否应该在iframe所属的parent frame上注册mutation observer?

let config = { attributes: true, childList: true, subtree: true, characterData: false };
let htmlBody = document.querySelector('body');

let observer = new MutationObserver(function(mutations, observer) {
    mutations.forEach(function(mutation) {
         console.log("Mutation calling");
    });
});

observer.observe(htmlBody, config);

tl;dr:是的,注入的 javascript 在导航发生时丢失。

Javascript 通常绑定到文档,而不是容器(即:浏览器、iframe 等)。通常,当导航发生时,该上下文中的任何 javascript 运行 都会被卸载,以便为新文档及其新的 javascript.

做准备

对于 iframe,这不会改变。 iframe 是查看上下文,iframe 的文档仍然是一个文档,并且仍然具有与正常加载时相同的语义。能够将代码注入该文档并不会改变任何事情。