我使用postMessage函数向我的页面中的iframe发送消息,如此
$(document).ready(function(){
document.getElementById('test').contentWindow.postMessage(message, '*');
)};//test is the id of my iframe in a.html
在b.html中,我使用window.addEventListener('message', onmessage, false);
来接收此消息:
window.onload = function() {
var onmessage = function(e) {
document.getElementById('display').innerHTML = e.data;
};
window.addEventListener('message', onmessage, false);
}; //this is the javascript in b.html
在IE10
中效果很好,但我无法在chrome
和firefox
收到任何消息!为什么?
答案 0 :(得分:0)
如果浏览器是最新的,请检查您的Chrome和FireFox更新。
OR
...试
alert(onmessage);
如果他们的任何消息输出。
答案 1 :(得分:0)
不要将你的代码放在window.onload中,也许当你调用postMessage时,iframe onload还没有被触发
var onmessage = function(e) {
console.log(e);
};
if ( typeof window.addEventListener != 'undefined') {
window.addEventListener('message', onmessage, false);
} else if ( typeof window.attachEvent != 'undefined') {
window.attachEvent('onmessage', onmessage);
}
答案 2 :(得分:0)
$(document).ready
将在DOMContentLoaded
上运行,这可能在子帧完成加载之前发生。因此,在您在孩子中添加听众之前,很有可能在父母中发送消息。