2013-02-06 76 views
2
是工作

首頁:window.attachEvent似乎並不IE8

... 
<script> 
if (window.addEventListener) { 
// addEventListener equivalent of code below 
} else if (window.attachEvent) { 
window.attachEvent("message", function(e) { 
    if (e.origin != "page2.html") { return; } 
    alert(e.data); 
}); 
} 
</script> 

<iframe src="page2.html"></iframe> 

page2.html:

<script> 
var message = "hello!"; 
parent.postMessage(message, '*'); 
</script> 

此代碼工作正常在Chrome,FF和Opera。當然,IE有自己的做事方式,所以儘管使用自己的.attachEvent這個代碼不起作用。

page2.html實際上是另一個域上的頁面;我正在發送正確的P3P標題(應該不重要,但那是)。

我如何知道爲什麼postMessage似乎沒有達到父頁面?

回答

11

attachEvent採取它的事件名稱的形式"onmessage",而不是addEventListener(使用"message"

+3

...它使用'window.event'代替'event'參數。 –

+0

將第一個參數切換爲「onmessage」...似乎沒有幫助。我在這裏錯過了什麼? –

+0

請參閱@ MarcelKorpel的評論,較早的IE使用'window.event'。一個通用的方法是'e = e || window.event' –