通常,没有直接访问其他来源
window对象的直接方法。如果要在不同框架中的内容脚本之间 安全地
通信,则必须将消息发送到后台页面,该页面又将消息发送回选项卡。
这是一个例子:
的一部分
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); }});一种替代方法是使用
chrome.tabs.executescript在
bg.js主内容脚本来触发的功能。



