Мне нужно передать данные с веб-страницы в iFrame, размещенный на этой веб-странице. Я использовал окно.postMessage. однако 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:
<!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 (localhost:8080). iFrame работает на моем HTTP-сервере, который я создал с помощью httplistener. Когда я запускаю родительскую страницу и нажимаю кнопку, которая генерирует событие, я не получаю предупреждение «Я в iFrame». Похоже, iFrame вообще не получает событие. Что мне здесь не хватает? Любая помощь очень ценится. Спасибо!