html – 从chrome的扩展内容脚本访问iframe内容

我正在做插件来做一些转换到界面。我不断得到不安全的JavaScript尝试访问框架与url ….域,协议和端口必须匹配(典型的跨站点问题)

但是作为扩展应该可以访问iframe的内容http://code.google.com/chrome/extensions/content_scripts.html

没有人知道如何访问它的内容,以便他们可以被捕获?

通常没有直接访问不同源窗口对象的方式。如果要在不同框架内的内容脚本之间进行安全的通信,则必须向后台发送消息,后台会将消息发送回该选项卡。

这是一个例子:

manifest.json的一部分:

"background": {"scripts":["bg.js"]},
"content_scripts": [
    {"js": ["main.js"], "matches": ["<all_urls>"]},
    {"js": ["sub.js"], "matches": ["<all_urls>"], "all_frames":true}
]

main.js:

var isTop = true;
chrome.runtime.onMessage.addListener(function(details) {
    alert('Message from frame: ' + details.data);
});

sub.js:

if (!window.isTop) { // true  or  undefined
    // do something...
    var data = 'test';
    // Send message to top frame, for example:
    chrome.runtime.sendMessage({sendBack:true, data:data});
}

背景脚本’bg.js’:

chrome.runtime.onMessage.addListener(function(message, sender) {
    if (message.sendBack) {
        chrome.tabs.sendMessage(sender.tab.id, message.data);
    }
});

另一种方法是在bg.js中使用chrome.tabs.executeScript触发主内容脚本中的一个函数。

相关文件

> Message passing c.runtime.sendMessage/c.tabs.sendMessage/c.runtime.onMessage
> MessageSenderTab类型。
> Content scripts
> chrome.tabs.executeScript

翻译自:https://stackoverflow.com/questions/11325415/access-iframe-content-from-a-chromes-extension-content-script

转载注明原文:html – 从chrome的扩展内容脚本访问iframe内容