我有一个浏览器书签,可以在页面上加载iframe。然后我需要iframe能够将字符串传递回父窗口。子页面具有以下功能:
function post(m){
parent.postMessage(m,'*');
}
只要子页面(iframe中加载的页面)在http上,这就可以正常工作。但是当它是https时,postMessage不起作用。我无法找到任何关于此的文档或任何解决方法。
有什么想法吗?
编辑:
在FF和Chrome上都会发生这种情况(尚未尝试IE)。为了澄清:iframe加载,只是postMessage没有被执行。在HTTP页面上,一切正常。我用来接收字符串的代码如下:
function listener(event){
if ( event.origin !== "http://www.mysite.com" )
return
if (event.data=="string1"){function1();}
if (event.data=="string2"){function2();}
}
if (window.addEventListener){
addEventListener("message", listener, false)
} else {
attachEvent("onmessage", listener)
}
答案 0 :(得分:8)
我想你早上需要咖啡。
以下是您的修复:
if ( event.origin.replace('https:', 'http:') !== 'http://www.mysite.com' ) return;