0

我想编写一个浏览器扩展程序,当某些事件发生时会做一些事情,我想知道是否已经有这样的 API(Firefox 或 Chrome)。

我最感兴趣的是 DOM 更改和窗口更改。

让我们考虑这个例子:

<html>
<head>
<script type="text/javascript">
    function addContentToDocument(content){
        document.cookie = "debug=true"; //<--- Notify

        if(content != null){
            document.write(content); //<--- Notify
        };
    }
</script>
</head>

<body onload="addContentToDocument('Say cheese')">
<h3>My Content</h3>
</body>
</html>

所以在这个简单的例子中,我会对 2 个事件感兴趣:document.cookie 更改和 document.write 方法调用。当这些事情发生时,我希望在我的分机中得到通知。不是这些语句是否存在于可用的 javascript 上下文中,而是它们是否实际正在执行。

我试图在 Firefox 扩展和 Chrome 扩展中搜索 API,但找不到任何有用的东西。

谢谢你。

更新:我感兴趣的其他方法是调用eval()方法和localStorage修改

4

2 回答 2

1

当前的 Firefox(和带有webkit前缀的 Chrome)支持Mutation Observers. 我不认为您可以使用它来捕获 cookie 更改,但您绝对可以捕获对 DOM 所做的更改(无论是否使用document.write)。

Mozilla 文档中的示例:

// select the target node
var target = document.querySelector('#some-id');

// create an observer instance
var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    console.log(mutation.type);
  });    
});

// 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();
于 2013-01-10T20:09:32.743 回答
0

如果您想监视在选项卡/窗口中打开的文档的更改,那么 MutationObservers 就是这样做的方法。如果你想监控纯 JS 中调用的方法,你需要查看 Spidermonkey 的 JSEngine apis,特别是 apis arou nd profiling & tracking:

https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_User_Guide#Tracing_and_Profiling

于 2013-01-11T03:33:12.427 回答