单击 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 的文档仍然是一个文档,并且仍然具有与正常加载时相同的语义。能够将代码注入该文档并不会改变任何事情。
在 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 的文档仍然是一个文档,并且仍然具有与正常加载时相同的语义。能够将代码注入该文档并不会改变任何事情。