在帧重新加载时检测帧更改或重新运行内容脚本?

时间:2015-01-05 09:33:34

标签: javascript jquery google-chrome-extension frame

我正在通过Chrome扩展程序在particular website上执行一些代码。我的代码应该只在网站的某些页面上执行。这包括仅在某些页面上调用pageAction.show,仅在某些页面上调用内容脚本。

直接链接到页面时 - 一切正常。但是,如果我通过任何其他页面导航到我的脚本应该执行的页面并且pageAction.show应该触发 - 它不会。我相信这与网站导航中如何加载页面有关。我想知道是否有办法检测重新加载/刷新和#34;强制"我要解雇的剧本。否则,最好的做法将在这里受到赞赏。谢谢!

编辑: 我不认为它是iFrame。我甚至不确定是否" Frame"是正确的词。该网站只有一个......非常动态的加载方法?不确定适当的术语是什么,但不管它是什么,它对我的​​代码很重要。

编辑2: 遇到一些意想不到的(对我而言)行为。当内容脚本加载此代码(pastebin.com/c7m3wXcf)时,没有任何反应。但是,如果我刷新然后导航,它就会开始发射。但它只是第一次拒绝这样做。也许我在这里找不到重要的东西。

1 个答案:

答案 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节点,它会执行代码。