我需要將數據從網頁傳遞到該網頁中託管的iFrame。我用window.postMessage。但是iFrame不會收到該事件。使用JavaScript從父到子iFrame進行跨域通信
這是我的代碼片段。 父頁面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test event listener</title>
</head>
<body>
<script type="text/javascript">
function SendMsgToIFrame() {
alert("In Parent window ");
var myiframe = document.getElementById('myIframe');
if (myiframe.contentDocument) {
myiframe.contentDocument.postMessage('Post Message from Parent', '*');
}
else if (myiframe.contentWindow) {
myiframe.contentWindow.postMessage('Post Message from Parent', '*');
}
</script>
<button type="button" onclick="SendMsgToIFrame()">Push to iframe</button>
<div id="iframeDiv">
<iframe id="myIframe" src="http://localhost:50000/Receiver.htm" width="500" height="200" frameborder=10>
</iframe>
</div>
</body>
</html>
代碼片段Receiver.htm是:(:8080爲localhost)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Got Text</title>
</head>
<body>
<script type="text/javascript">
window.attachEvent("onMessage", myhandler);
function myhandler(mobj) {
alert("I am in iFrame");
var message = mobj.data;
alert("data: " + message);
}
</script>
<input type="text" name="text1" id="text1" value="text here" />
</body>
</html>
我Tomcat上運行父頁面。 iFrame正在使用httplistener構建的HTTP服務器上運行。 當我運行父頁面並點擊生成事件的按鈕時,我沒有看到「我在iFrame中」的提示。看起來iFrame根本沒有收到該事件。我在這裏錯過了什麼? 任何幫助非常感謝。謝謝!
我正在使用IE8.addEventListener將無法使用IE8。 AttachEvent是IE8的正確方法。我正在發佈到內容窗口。我的斷點到達了這條線。 – 2013-05-11 01:10:07