我正在开发一个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”警报永远不会被调用。我究竟做错了什么?
答案 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。