我試圖做一個頁面之間使用的postMessage跨域通信(上example1.com),這是對example2.comHTML5的postMessage返回undefined
當iframe中完成加載在同一頁上的iframe它使用以下命令將postMessage發送到父頁面:
parent.postMessage('hello parent','http://example1.com'); //這個命令的工作
在事件處理程序的postMessage在父頁面(上example1.com),我送一個響應返回給使用下列功能的子頁面(example2.com):
//this function is defined in example1.com:
function receiveMessage(event){
if (event.origin == "http://example2.com"){
console.log('Message Received from iframe'); //this line works
event.source.postMessage('hello to you too', event.origin); //this line does not work
}
}
出於某種原因,iframe中postMessage的事件處理程序未觸發。
//this function is defined in example2.com
function receiveMessage(event){
if (event.origin == "http://example1.com"){ // I even tried removing this check to no avail
console.log('Message Received from parent'); //this line works
}
}
當父母試圖發送消息給iframe時,它只是返回undefined。
任何幫助表示讚賞!
編輯:
我試圖改變example1.com的receiveMessage事件下面一行:( '你好你太',event.origin)
event.source.postMessage;
這樣:
event.source.postMessage( '向你問好太', 'http://example2.com');
但我得到這個以下錯誤:
無法投遞郵件http://example2.com。收件人有產地http://example1.com
爲什麼event.origin評估,以http://example1.com當從example2.com接收消息?
example1.com正試圖發送一個postMessage。這應該是錯誤的來源
1)瀏覽器? 2)「家長」評估什麼? – enhzflep
你說「從父母那裏收到的信息」是有效的 - 那麼這個非工作線實際上不起作用? – pimvdb
1)Chrome v22.0.1229.94。 2)在控制檯中對父窗口進行評估,即example1.com – Kiran