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事件來交換數據。 我在做什麼錯?
在此先感謝您的回覆。