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

时间:2013-05-24 22:33:09

标签: javascript iframe google-chrome-extension

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

要休息:我意识到你可以通过postMessage,哈希等从iframe脚本到其父脚本进行通信,但我的主要目标是直接从内容脚本向iframe添加事件而不是必须传递信息(并创造一个中间人)。

我相信注入的内容脚本会在“他们自己的小世界”页面上运行,其中页面本身或其他内容脚本都可以访问,因此它让我相信Chrome可能会allow这些脚本访问到自己的iframe(扩展网址本身)。

修改

只是为了澄清,iframe将在协议chrome-extension://下有一个chrome扩展名的网址。 iframe的父页面可以包含任何网址,例如http://stackoverflow.com。因此,尝试从内容脚本访问iframe通常不会通过same-origin-policy ...问题是如果使用Chrome的扩展程序库可以解决这个问题。

谢谢!

1 个答案:

答案 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

    });


});