1

问题很简单:有什么方法可以使内容脚本(通过executeScript())能够访问当前网页(例如stackoverflow.com)上与扩展程序本身具有相同来源的 iframe?

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

我相信注入的内容脚本在“他们自己的小世界”页面上运行,页面本身,也没有其他内容脚本可以访问,所以它让我相信 Chrome 可能allow这些脚本可以访问它自己来源的 iframe(扩展网址本身)。

编辑

澄清一下,iframe 在协议下会有一个 chrome 扩展本身的 url chrome-extension://。例如,iframe 的父页面可以有任何 url http://stackoverflow.com。因此,尝试从内容脚本访问 iframe 通常不会通过same-origin-policy...问题是是否有办法使用 Chrome 的扩展库解决此问题。

谢谢!

4

1 回答 1

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

    });


});
于 2013-05-25T13:30:43.140 回答