从Chrome的扩展程序内容脚本访问iframe内容
我正在做一个插件来对界面进行一些转换。我不断收到unsafe javascript attempt to access frame with
url.... Domains, protocols and ports must match(典型的跨网站问题)
但作为扩展程序,它应该可以访问iframe的内容
…
没有人知道如何访问它的内容以便可以被捕获吗?
回答:
通常,没有直接访问其他来源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
主内容脚本来触发的功能。
以上是 从Chrome的扩展程序内容脚本访问iframe内容 的全部内容, 来源链接: utcz.com/qa/423914.html