从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.executeScriptbg.js主内容脚本来触发的功能。

以上是 从Chrome的扩展程序内容脚本访问iframe内容 的全部内容, 来源链接: utcz.com/qa/423914.html

回到顶部