我想让扩展程序帮我查看不同网站的状态。所以我需要扩展来打开不同的网站,并在网页上检查一些dom。该网站可能是一个动态网页,所以我必须在浏览器中加载页面,以便我可以获得真正的dom(不仅仅是源代码)。 通常,对于相同的域名范围。它可能是这样的:
var w = window.open('http://www.yahoo.com');
console.log(w);
$(w).bind('load', function() {
//In chrome extension, i can not get "this.document"
//And in iframe i can not get "document", either
console.log(this.document);
});
我正在尝试使用chrome扩展程序允许域名交叉ajax。所以我可以操纵不同domians的窗口。 但它失败了。该代码段在Chrome扩展程序下无效。为什么?为什么chrome扩展程序有权执行跨域ajax但不能操作来自其他域的窗口? 我也试过了iframe。它也不起作用。
我想问一下,有没有办法通过chrome或chrome扩展来操纵跨域文档操作?
答案 0 :(得分:1)
您可以使用--disable-web-security
参数运行chrome以禁用跨域策略。如果这样做,您将不需要扩展来操纵另一个窗口。
答案 1 :(得分:1)
chrome扩展的一个优点是:它为webapp授予更多权利以绕过某些安全限制,包括XHR。
请在跨站点xhr检查文档:
http://code.google.com/chrome/extensions/xhr.html
一些预防措施:您需要配置manifest.json
文件,permissions
属性以在更多网址上启用xhr:
More possible permissions
如果您需要在iframe中运行扩展内容脚本,请注意content_scripts
doc
{ "name": "My extension", ... "permissions": [ "tabs", "http://*/*", "https://*/*" ], "content_scripts": [{ //note: for iframe, array "matches":[ "http://*/*", "https://*/*" //match all url ], "run_at": "document_idle", "js": ["jquery.min.js", "contentscript.js"] //script you need to run in iframe }]
}
您需要在background.html
中处理xhr,或者将网址传递到扩展程序将打开的新窗口(chrome.windows.create
)。您可能对我正在处理的扩展(对于清单和窗口打开)有所了解:https://github.com/vincicat/ImageInfoPlus
希望它可以提供帮助。