[問題] 請教幾個關於onload的事件行為

看板Ajax作者 (悲情城市之悲情程式猿)時間16年前 (2009/07/22 23:37), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
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. 我有用Date寫一個小函式,用迴圈檢查經過指定秒數後才會離開迴圈 這樣的方法來做為程式的延遲,這樣的方法有沒有可能讓迴圈完全佔用CPU 而使得事件也被延後執行? 也就是說,是不是只要延遲有限的時間,一定可以讓事件都被執行? 4. 那如果用setTimeout()能夠做為第3點要的功能的機制嘛? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.2.83

07/23 00:08, , 1F
setTimeout原本就是要用來作延遲的觸發的,不就是你的3?
07/23 00:08, 1F

07/23 00:12, , 2F
我是想說3會不會造成回圈的執行佔用資源,造成handler
07/23 00:12, 2F

07/23 00:12, , 3F
有可能被回圈完全block,第四點也是類似的問題
07/23 00:12, 3F

07/23 00:13, , 4F
我改一下敘述好了... XD
07/23 00:13, 4F
※ 編輯: forgmonkey 來自: 59.121.2.83 (07/23 00:15)

07/23 07:25, , 5F
reload()時,載入的是檔案,不在檔案中的不會載入。另外,
07/23 07:25, 5F

07/23 07:30, , 6F
使用jQuery的話,請看http://0rz.tw/oUu7H ,關於timer,
07/23 07:30, 6F

07/23 07:33, , 7F
07/23 07:33, 7F

07/23 07:35, , 8F
了解timer運作,你就會知道你用迴圈延遲執行會發生什麼事
07/23 07:35, 8F
感謝fillano,實際上我在寫firefox extension,我沒有用JQuery。 那想在請問一下,window因該不是檔案的部份,那window.document算是檔案的一部分嘛? 實際上我從extension內對window.addEventListener,不論是不是在capture階段捕捉 reload之後handler都沒被觸發。 我現在是對firefox內該分頁瀏覽器的<xul:browser>掛 load的handler,可以在capture階段收到event 然後在這個handler裡面再對window的load在掛一個handler 而且很詭異的,不論是不是capture都可以執行 (load不會bubble,所以在bubble phase因該抓不到) 但是結果是保證會是在body.onLoad之後執行 (這很也詭異,不過看了timer的文章後了解了原因) 但是我在window onLoad的handler裡面 對網頁元素觸發click事件 卻是沒有效果的,現在這在苦惱這個問題 兩層的callback可能有點複雜... 重點是不能用啊啊啊啊~~~ 文件看完了,原來整個都是單一執行緒 然後從thread pool裡面挑出來放到queue 不過他怎麼決定何時是可以中斷現在的block的時機? 如果迴圈可以被中斷,那事件是有可能被執行掉的(雖然我覺得不可能 XD) ※ 編輯: forgmonkey 來自: 59.121.1.14 (07/23 10:05) ※ 編輯: forgmonkey 來自: 59.121.1.14 (07/23 10:07) ※ 編輯: forgmonkey 來自: 59.121.1.14 (07/23 10:09) ※ 編輯: forgmonkey 來自: 59.121.1.14 (07/24 10:13)
文章代碼(AID): #1APp8ly2 (Ajax)
文章代碼(AID): #1APp8ly2 (Ajax)