7

因此,我在 DomainA 上有一个页面,并且使用 Chrome 扩展程序,我正在注入一些 javascript 来插入指向 DomainB 的 iframe。

$("body").append("<iframe id='someFrame' src='http://www.domainB.com' width='300' height='800'></iframe>");

我还将一些 javascript 注入到 DomainA 中,试图获取 iframe 的 contentWindow。我想在上面使用 HTML5 postMessage api。

$("body").append("<a class='myLink'>Post Message</a>");
$(".myLink").click(function(){
    var frameElem = document.getElementById("someFrame"); 
    console.log("frameElem: " + frameElem); //succeeds

var contentWin = frameElem.contentWindow;
console.log("contentWin : " + contentWin); //undefined

//can't do this since contentWin is undefined: 
//contentWin.postMessage("data", "*");
});

但是,contentWindow 属性未定义。为什么会这样,我该如何解决?如果我将此扩展代码放在网页中,它本身就可以正常工作。

谢谢!

(请原谅蹩脚的 jquery/javascript)

4

3 回答 3

10

我知道回答我自己的问题有点蹩脚,但我做了更多的挖掘,并在 Chromium 上发现了一个针对该问题的错误:http ://code.google.com/p/chromium/issues/detail?id= 20773

我在 chromium 扩展组中找到了这个链接: http://groups.google.com/a/chromium.org/group/chromium-extensions/browse_thread/thread/1d4b68f0971ef190/3446a7e82848351c?lnk=gst&q= contentWindow#3446a7e82848351c

于 2010-11-02T17:43:55.280 回答
1

我认为这与内容脚本无法访问其父页面的窗口对象的原因相同。看到这个问题,它有一个解决方法的链接。

于 2010-11-01T23:44:26.623 回答
-1

您需要在根框架中嵌入一个 iframe,它将请求发送到客户端框架,然后客户端框架将命令发送回根网站,如以下示例所示。这被称为“单向管道”黑客攻击。:http: //msdn.microsoft.com/en-us/library/bb735305.aspx
替代文字

于 2010-11-02T00:00:34.737 回答