挂钩document.write函数

时间:2013-01-23 02:46:15

标签: javascript google-chrome

我正在开发一个Chrome扩展程序,要求我拦截document.write函数(注意:我正在使用内容脚本)。我在这里使用这个方法: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”警报永远不会被调用。我究竟做错了什么?

1 个答案:

答案 0 :(得分:4)

您的扩展程序在自己的沙箱中运行,has no access to the web page's JavaScript environment。在您的扩展程序中覆盖document.write不会影响网页本身的document.write功能。

以下是the docs的引用:

  

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

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

要更改网页的document.write功能,您必须insert your script into the DOM