我一直在尋找對我的問題的答案 - 迄今爲止沒有運氣。爲什麼窗戶只打開一次`onload`事件?
這裏是我的代碼:
var oNewWindow = window.open(sLink,'_blank');
oNewWindow.addEventListener('load',function() { alert('Page loaded'); }, false);
當彈出窗口/選項卡中打開的處理程序被調用,但如果我瀏覽彈出窗口裏面,處理程序不會被調用。爲什麼?有沒有辦法讓它工作?
基本思想是用戶打開一個彈出窗口,然後在彈出窗口中開始瀏覽,而父窗口中的代碼繼續工作並監視彈出窗口中發生了什麼。彈出頁面是同一個域上的頁面。
第一次加載彈出窗口後,我附加了一個onunload
處理程序,它會在父窗口中調用處理程序,然後啓動計時器。然後,父窗口的腳本將與彈出窗口的內容一起工作。但是,如果計時器耗盡且彈出窗口內的舊頁面仍然存在,我得到不正確的數據,並且整個腳本停止,問題就會出現滯後。之後我無法附加另一個onunload
處理程序。
onload
處理程序是爲整個窗口設置的,而不是窗口內的文檔,那麼爲什麼不是處理程序調用?
另外,我的腳本是在GreaseMonkey的幫助下運行的。因爲我只使用Firefox,所以我不需要跨瀏覽器。
非常好的方法。加載包含iframe的彈出窗口。然後從父腳本訪問iframe並將'onload'事件附加到它,然後'iframe.src = link'。父腳本具有iframe的句柄,因此可以分析內容。 – user1651105 2011-05-11 17:15:10