javascript - 为什么我的 chrome 扩展程序不能使用 HTML5 postMessage 与我注入(inject)的框架进行通信?

标签 javascript google-chrome google-chrome-extension postmessage

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

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

我还在 DomainA 中注入(inject)了一些 javascript,试图获取 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)

最佳答案

我知道回答我自己的问题有点蹩脚,但我做了更多的挖掘,并在 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

关于javascript - 为什么我的 chrome 扩展程序不能使用 HTML5 postMessage 与我注入(inject)的框架进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073057/

相关文章:

javascript - 关于javascript中继承数组对象的属性

javascript - 导航栏悬停鼠标

javascript - 将 'unsafe-eval' 添加到现有的 Chrome 扩展

javascript - ES6中如何简化对象映射?

javascript - Firefox 和 Chrome 窗口宽度/高度显示不同

firefox - 如何获取具有多个来源的视频的 src?

javascript - 在 Javascript 中检测 Chrome 媒体设置

google-chrome - Chrome Devtools 中低于 500 字节的 HTTP 响应的高 "Receiving Time"

google-chrome - 使用 Chrome 使用的 Google 用户以外的 Google 用户登录 Chrome 扩展程序

javascript - Chrome 扩展程序弹出窗口未显示?