MozTW 討論區 https://forum.moztw.org/ |
|
在extension中操作,重讀網頁的問題 https://forum.moztw.org/viewtopic.php?f=18&t=27485 |
第 1 頁 (共 1 頁) |
發表人: | clydewu [ 2009-07-21, 07:13 ] |
文章主題 : | 在extension中操作,重讀網頁的問題 |
我做了一個extension,會開啟一個新視窗chromeWindow 還有一個範例網頁 extension會做以下動作: (1)用opener.top.getBrowser().selectedBrowser.contentWindow 取得目前的網頁視窗 (2)用opener.top.getBrowser().selectedBrowser.contentDocument 取得目前的網頁document (3)用contentDocument.createEvent()建立事件然後觸發 (4)這個事件會刪掉某個元素id=test (5)用contentWindow.location.reload()重新讀取網頁 (6)現在再contentDocument.getElementById('test'),要拿那個元素 哎呀~結果拿不到? 我知道其實我存取到的是XPCNativeWrapper,MDC上相關文件有看過了,不過我不清楚他到底會對我要做的事情會造成什麼影響。 但是我觀察到的是真正的"網頁"確實有reload(),網頁上的東西也真的有被刪掉然後重新出現。 但是刪除的改變有反映在XPCNativeWrapper偽裝的Document上,但是reload的改變卻沒有... 不知道有人知道這是怎麼一回事嘛? |
發表人: | JackieKu [ 2009-07-21, 13:36 ] |
文章主題 : | |
location.reload()這個method不會等到網頁載入後才return 所以你必須用addEventListener()去處理"load"這個事件 以上只是我的猜測 不知道你的問題是不是出在這裡 |
發表人: | clydewu [ 2009-07-22, 23:07 ] |
文章主題 : | Re: 在extension中操作,重讀網頁的問題 |
似乎是這個問題沒錯 看來我想的太複雜了 居然忽略了這小小點... 先謝謝點醒了!! 現在已經把主迴圈改成多個事件驅動的函式了 不過有另外幾個觀念上問題想請教一下... 1. 執行window.location.reload()後,可以馬上在window、document或body裡面放入load事件的handler嘛? 這些handler是不是可能在reload的過程中被清除掉? 或是要body.addEventListener時,body還根本不存在? 2. 是不是window.location.reload()後,等到完全載入了,才會開始body的load事件的"propagation->handler->bubbling"三步驟? 因為load事件是不會bubbling的,所以只能在propagation階段抓到。這時候抓到可以確保body已經load完畢了嘛? 3. 我有寫一個小函式,能夠用迴圈檢查經過指定秒數後才會離開迴圈 這樣的方法, 能夠用來做為"延遲指定秒數來等事件觸發"的功能嘛? 4. 那如果用setTimeout()能夠做為第3點要的功能的機制嘛? |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |