<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-57  評論-129  文章-0  trackbacks-0

    這個問題算是個老問題了。
    所以,標題加上一個再字。

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

    對于FF,Opera9,原生DOMContentLoad支持,就不說了,最頭疼的是IE。
    我最初考慮這個問題的時候,想到的是document的readyState屬性。
    偷窺一下Dojo的源碼,發現它也是基于這個屬性去做的,那時,我基本就認準了這個方法。
    于是再后來JSI1和JSI2早期的預覽版本中,都是基于這個屬性做的,后來,有個朋友向我反應,說JSI的裝飾引擎在IE上啟動比FF慢很多,我當時就猜測,是否是這個DOMContentLoad的問題。

    經過測試,發現,確實,readyState必須等待圖片裝載完成之后才能置為complete。
    于是到網上搜索一下其他辦法,最終 Dean Edwards的blog上描述的一個基于script defer屬性的解決辦法勝出:http://dean.edwards.name/weblog/category/dom/onload/
    不過,使用document.write打印一段腳本,我真的不喜歡:(

    在評論里面我們可以看到一些其他的建議,有人認為 readyState == 'complete' 加 readyState==‘interactive’這個狀態可以準確模擬DOMContentLoad。我開始簡單測試一下,貌似可行,但是后來發現 readyState==‘interactive’可能受alert等函數影響,就是說,一般情況下,readyState== ‘interactive’時,dom是裝載完了的,但是,當你文檔裝載過程中,調用了alert函數,那么,readyState將提前置為 ‘interactive’。

    總之,目前來說,我知道的,只有兩個辦法可以真正實現IE上模擬DOMContentLoad

      1.htc ondocumentready(需要額外的HTC文件)
      2.script defer(必須使用document.write打印一段腳本標記,jquery目前采用的方式)

    最常見的一個錯誤:
      document.readyState(Dojo目前(0.4.1)采用的方式)

    再說一下JSI的DOMContentLoad實現的使用接口。

    js.html.EventUtil.addDOMReadyListener(<Function>listener ,<boolean>runAnyCase )

    第二個參數用于確保listener 在任何時候都會被調用(FF DOMContentLoad事件如果在事件發生之后設置listener是無效的)

    posted on 2007-06-25 09:13 金大為 閱讀(656) 評論(0)  編輯  收藏 所屬分類: JavaScript
    主站蜘蛛池模板: 十九岁在线观看免费完整版电影| 亚洲一级特黄特黄的大片| 色天使色婷婷在线影院亚洲| 成人看的午夜免费毛片| 亚洲人成色4444在线观看| 性感美女视频在线观看免费精品| 亚洲精品二三区伊人久久| 青苹果乐园免费高清在线| 亚洲码和欧洲码一码二码三码| 成人免费视频观看无遮挡| 日韩亚洲人成在线综合| 亚洲 综合 国产 欧洲 丝袜| 一级毛片无遮挡免费全部| 亚洲人成网亚洲欧洲无码久久| 成人免费区一区二区三区| 亚洲精品亚洲人成在线麻豆| 国产情侣激情在线视频免费看| 亚洲伊人久久大香线蕉结合| 日本v片免费一区二区三区| 免费视频成人国产精品网站| 亚洲老妈激情一区二区三区| 8090在线观看免费观看| 中文字幕在线日亚洲9| 免费人成视频在线观看不卡| 成年免费a级毛片免费看无码| 亚洲国产成人久久综合一| 九九精品免费视频| 污视频网站免费观看| 亚洲AV无码一区二区乱子伦 | 国产免费人人看大香伊| 人成电影网在线观看免费| 久久亚洲国产伦理| 啦啦啦www免费视频| 国产精品永久免费视频| 亚洲伊人久久大香线蕉影院| 免费a级毛片网站| **一级毛片免费完整视| 免费在线观看一区| 亚洲精品视频免费在线观看| 亚洲第一福利网站在线观看| 亚洲一级免费毛片|