Javascript Chrome扩展允许内容脚本访问iframe

Javascript Chrome扩展允许内容脚本访问iframe,javascript,iframe,google-chrome-extension,Javascript,Iframe,Google Chrome Extension,问题很简单:有没有办法让内容脚本(通过executeScript())能够访问当前网页(比如stackoverflow.com)上与扩展本身具有相同来源的iframe 休息一下:我意识到您可以通过postMessage、散列等从iframe脚本到其父脚本进行通信,但我的主要目标是直接从内容脚本向iframe添加事件,而不必传递消息(并创建中间人) 我相信注入的内容脚本在“他们自己的小世界”的页面上运行,在这个小世界中,页面本身和其他内容脚本都无法访问,因此我相信Chrome可能会允许这些脚本访问

问题很简单:有没有办法让内容脚本(通过
executeScript()
)能够访问当前网页(比如
stackoverflow.com
)上与扩展本身具有相同来源的iframe

休息一下:我意识到您可以通过postMessage、散列等从iframe脚本到其父脚本进行通信,但我的主要目标是直接从内容脚本向iframe添加事件,而不必传递消息(并创建中间人)

我相信注入的内容脚本在“他们自己的小世界”的页面上运行,在这个小世界中,页面本身和其他内容脚本都无法访问,因此我相信Chrome可能会
允许
这些脚本访问它自己来源的iFrame(扩展url本身)

编辑

只是澄清一下,iframe将在协议
chrome extension://
下有一个chrome扩展本身的url。iframe的父页面可以有任何url,比如
http://stackoverflow.com
例如。因此,试图从内容脚本访问iframe通常不会通过
同源策略
…问题是是否有办法使用Chrome的扩展库来解决这个问题


谢谢

您当然可以在页面上运行内容脚本,并与任何嵌入式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

    });


});

谢谢你的回复。我确信这在同一个域下可以工作,但当我的iframe有
chrome扩展协议,并且页面是某个外国网页(在
http://
下)时,这不会传递相同的原产地政策…更新问题以澄清如果这对您有效,您是否做了其他事情(可能在清单文件中)这使它能够在不同的域下工作?在我的例子中,父页面(我的内容脚本被绑定到的地方)和iframe在同一个域中运行。如果不是这样的话,我可以想象,这只是在清单权限中声明iframe域的一种情况。对,我是这样想的……在我的例子中,iframe实际上来自我的扩展,它的
src
是从
chrome.extension.getURL()生成的
@QF_Developer你能看看我的问题吗?看起来我想要的和他完全一样你能想出解决方案吗?