我正在通过Chrome扩展程序在particular website上执行一些代码。我的代码应该只在网站的某些页面上执行。这包括仅在某些页面上调用pageAction.show,仅在某些页面上调用内容脚本。
直接链接到页面时 - 一切正常。但是,如果我通过任何其他页面导航到我的脚本应该执行的页面并且pageAction.show应该触发 - 它不会。我相信这与网站导航中如何加载页面有关。我想知道是否有办法检测重新加载/刷新和#34;强制"我要解雇的剧本。否则,最好的做法将在这里受到赞赏。谢谢!
编辑: 我不认为它是iFrame。我甚至不确定是否" Frame"是正确的词。该网站只有一个......非常动态的加载方法?不确定适当的术语是什么,但不管它是什么,它对我的代码很重要。
编辑2: 遇到一些意想不到的(对我而言)行为。当内容脚本加载此代码(pastebin.com/c7m3wXcf)时,没有任何反应。但是,如果我刷新然后导航,它就会开始发射。但它只是第一次拒绝这样做。也许我在这里找不到重要的东西。
答案 0 :(得分:1)
你可以选择Mutation Observers:
// select the target node
var target = document.documentElement;
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// put your code here "pageAction.show"
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true }
// pass in the target node, as well as the observer options
observer.observe(target, config);
// later, you can stop observing
observer.disconnect();
这段代码的作用是观察DOM树,如果有任何更改,比如创建/删除dom节点,它会执行代码。