3

我正在开发一个需要我拦截 document.write 函数的 Chrome 扩展程序(注意:我正在使用内容脚本)。我在这里使用该方法:http: //sitr.us/2012/09/04/monkey-patching-document-write.html 但它无法正常工作。这就是我现在所拥有的:

(function() {
    var originalWrite = document.write;
    alert("checkpoint 1");
    document.write = function() {
        alert("checkpoint 2");

        //secret stuff here         

        return Function.prototype.apply.call(
                        originalWrite, document, arguments);    
    }
})();

但是,当我在网页上调用 document.write 时,我的钩子中的“检查点 2”警报永远不会被调用。我究竟做错了什么?

4

1 回答 1

4

您的扩展程序在其自己的沙箱中运行,并且无法访问网页的 JavaScript 环境。在扩展中覆盖document.write不会影响document.write网页本身的功能。

这是来自文档的引用:

但是,内容脚本有一些限制。他们不能:

  • 使用 chrome.* API(chrome.extension 的部分除外)
  • 使用由其扩展页面定义的变量或函数
  • 使用由网页或其他内容脚本定义的变量或函数

要更改document.write网页的功能,您必须将脚本插入到 DOM中。

于 2013-01-23T02:48:58.830 回答