再談一下DOMContentLoad事件

2021-08-29 08:31:20 字數 968 閱讀 8181

這個問題算是個老問題了。

所以,標題加上乙個再字。

我主要說一下模擬這個事件時候容易出現的問題。

對於ff,opera9,原生domcontentload支援,就不說了,最頭疼的是ie。

我最初考慮這個問題的時候,想到的是document的readystate屬性。

**一下dojo的原始碼,發現它也是基於這個屬性去做的,那時,我基本就認準了這個方法。

於是再後來jsi1和jsi2早期的預覽版本中,都是基於這個屬性做的,後來,有個朋友向我反應,說jsi的裝飾引擎在ie上啟動比ff慢很多,我當時就猜測,是否是這個domcontentload的問題。

經過測試,發現,確實,readystate必須等待裝載完成之後才能置為complete。

於是到網上搜尋一下其他辦法,最終 dean edwards的blog上描述的乙個基於script defer屬性的解決辦法勝出:

不過,使用document.write列印一段指令碼,我真的不喜歡:(

[b]總之,目前來說,我知道的,只有兩個辦法可以真正實現ie上模擬domcontentload [/b]

[list]1.htc ondocumentready(需要額外的htc檔案)

2.script defer(必須使用document.write列印一段指令碼標記,jquery目前採用的方式)

[/list]

[b]最常見的乙個錯誤:[/b]

[list]document.readystate(dojo目前(0.4.1)採用的方式)

[/list]

再說一下jsi的domcontentload實現的使用介面。

[url=""]js.html.eventutil.adddomreadylistener(listener ,runanycase )[/url]

第二個引數用於確保listener 在任何時候都會被呼叫(ff domcontentload事件如果在事件發生之後設定listener是無效的)

換乙個角度再談一下WF

使用wf可以開發兩類流程 是傳統意義的工作流平台所提供的流程,特點是用流程進行業務的狀態處理 在這裡先對功能控制類流程做個說明 舉個例子 我們先對a表進行資料操作,再對b表進行資料操作.如果操作b表失敗,則回滾對a表的操作.當然,看到這裡你會說這不就是資料庫的事務處理嗎.是的沒錯,那我們將上面操作的...

說一下Docker 一

對於提高伺服器的效能,支援輕量級的虛擬,實現開發測試上線的高度一致,團隊開發環境的協調統一,docker表現得極為出色。在功能上,我們將docker理解為乙個超輕量級的虛擬機器,它比vmware占用的資源少很多,執行速度快很多,因為它們的底層實現技術完全不同。docker就像乙個模具,我們能在作業系...

感慨一下,OI ACM

今天瞎逛幾個國內的online judge,在pku的rank list上看到大學隔壁宿舍一哥們的id。頓生景仰之情啊,我靠。rank 13,solved 1538 很有感慨,自己整個大學都沒有去參加acm,可能也是高中的oi讓我很不爽。回想一下當年自己高三上學期的時候,整天泡在學校機房,當時是做 ...