0
我想要一个弹出窗口通知其父窗口,有些数据可用于父。我使用的机制是dataavailable事件 - 弹出窗口创建它并将其发送给父级。父母监听这样的事件,并在事件发生时调用父母的事件处理程序。数据可用事件如何将数据从弹出窗口发送到Javascript中的父窗口?
问题是我试图在事件中实际传递一些数据。数据没有得到父母。
这里是父,测试parent.html的源代码:
<html>
<head>
<title>Test parent</title>
<script type="text/javascript">
function openPopup()
{
window.open("test-popup.html", "popup", ['width=400', 'height=200']);
window.addEventListener("dataavailable", onDataAvailableEvent, false);
}
function onDataAvailableEvent(event)
{
alert("In onDataAvailableEvent(), " +
"event.timeStamp '" + event.timeStamp +
"', event.eventType '" + event.eventType + "'");
}
</script>
</head>
<body>
<input type="button" value="Open test-popup.html" onclick="openPopup()" />
</body>
</html>
这里是为弹出,测试popup.html的源代码:
<html>
<head>
<title>Test popup</title>
<script type="text/javascript">
function onButtonClick()
{
var syntheticEvent = document.createEvent("Events");
syntheticEvent.initEvent("dataavailable", true, false);
syntheticEvent.eventType = "test-popup.html finished";
window.opener.dispatchEvent(syntheticEvent);
alert("Dispatched dataavailable event, " +
"syntheticEvent.timeStamp '" + syntheticEvent.timeStamp +
"', syntheticEvent.eventType '" + syntheticEvent.eventType + "'"");
}
</script>
</head>
<body>
<input type="button" value="Create dataavailable event" onclick="onButtonClick()" />
</body>
</html>
测试 - parent.html和test-popup.html都会提示警报消息。两条警报消息中的时间戳都是一致的,所以我相当肯定,弹出窗口创建的事件正在被父级接收。弹出窗口显示syntheticEvent.eventType的正确值,但父项中的event.eventType未定义。
我在网上找到的例子意味着可以通过将数据放入dataavailable事件来交换数据。 我在做什么错?
在此先感谢您的回复。