我的印象是content_scripts是在页面上执行的,但现在好像有一些沙盒正在进行中.
我正在开发一个扩展来记录站点的所有XHR流量(用于调试和其他开发目的),并且在控制台中,以下嗅探代码可以工作:
var o = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function(){ console.log(arguments,'open'); return o.apply(this,arguments); }; console.log('myopen'); console.log(window,window.XMLHttpRequest,window.XMLHttpRequest.prototype,o,window.XMLHttpRequest.prototype.open);
每次发送XHR时都会记录一条消息.然而,当我把它放在扩展中时,真正的原型不会被修改.显然我的脚本看到的window.XMLHttpRequest.prototype与实际页面的不同.
这有什么办法吗?此外,这个沙箱行为是否记录在任何地方?我环顾四周,却找不到任何东西.
解决方法
你不能这样做.根据
documentation:
However,content scripts have some
limitations. They cannot:
- Use chrome.* APIs (except for parts of chrome.extension)
- Use variables or functions defined by their extension’s pages
- Use variables or functions defined by web pages or by other content scripts
- Make cross-site XMLHttpRequests