问题很简单:有没有办法让内容脚本(通过executeScript()
)能够访问当前网页上的iframe(例如stackoverflow.com
),该网页具有相同的来源扩展本身?
要休息:我意识到你可以通过postMessage,哈希等从iframe脚本到其父脚本进行通信,但我的主要目标是直接从内容脚本向iframe添加事件而不是必须传递信息(并创造一个中间人)。
我相信注入的内容脚本会在“他们自己的小世界”页面上运行,其中页面本身或其他内容脚本都可以访问,因此它让我相信Chrome可能会allow
这些脚本访问到自己的iframe(扩展网址本身)。
修改
只是为了澄清,iframe将在协议chrome-extension://
下有一个chrome扩展名的网址。 iframe的父页面可以包含任何网址,例如http://stackoverflow.com
。因此,尝试从内容脚本访问iframe通常不会通过same-origin-policy
...问题是如果使用Chrome的扩展程序库可以解决这个问题。
谢谢!
答案 0 :(得分:0)
您当然可以在页面上运行内容脚本并与任何嵌入式iframe进行交互。我最近正在做一个项目,我需要这样做。
我没有纯javascript的解决方案,所以这需要你包含jQuery.js库,如果它适合你。
在父页面上运行的内容脚本中,我执行了以下操作:
//CAPTURE FRAME LOAD
$("#frameID").load(function () {
//Create an object for the frame
var firstFrame = window.parent.frames[0].document;
//Set JQuery events to run in the context of the frame
$("#buttonID", firstFrame).click(function(){
//Capture click event of a button within the frame
});
});