李威 さぽている

          小說翻譯,日語相關轉移至http://blog.hjenglish.com/liwei

          javascript代碼的執行順序

          這個不弄明白,代碼出問題了也不難以解決。
          《learning Jquery 1.3》p15有一句  JavaScript code is generally run as soon as it is encountered in the browser
          也就是說,瀏覽器遇到一個語句就立刻解析。貌似這個問題很快就解決了。

          但javascript的寫法相當多,譬如網上很多人討論的$(document).ready(和<body onload= 執行先后問題
          在p16中,提到onload    to run after the page is completely loaded.即onload在頁面完全加載完之后執行
          ready是firing once the DOM is loaded—without waiting for images 。ready在DOM加載完,圖片未加載時執行。
          也即ready在onload之前調用。

          這里就涉及html頁面的加載順序問題。網上搜到2篇相關文章。
          瀏覽器做了什么?
          http://www.cnblogs.com/guilipan/archive/2010/01/06/1640145.html
          Javascript在頁面加載時的執行順序
          http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/

          看完之后,比之前明白了些,但具體的關系還是沒能理解。
          一個html頁面包括head和body兩個部分,head部會調用外部CSS和JS文件,body部會調用圖片,音視頻等內容。
          下載順序是html ->CSS JS ->圖片等。
          解析順序是html(內部是按序執行head->body)->DOM生成 ->ready執行 ->圖片下載 ->body.onload

          將以上兩者結合,html ->head(CSS JS) ->body->DOM生成 ->ready執行 ->圖片下載 ->body.onload
          其中head和body部都可能包含js,按代碼順序執行。
          這里就有一個疑問,瀏覽器會等待JS等文件下載完后,并順序執行該JS后再繼續執行之后的html代碼么?
          按想應該不會,不然JS文件過大,會影響html頁面渲染的速度,兩者應該是異步的。
          但這個異步就會將之前總結的順序攪亂。譬如onload都執行完了,包含ready的JS還沒下完,此時會發生什么?
          這里說得有問題,JS未下載完,onload是不會執行的。
          有待繼續總結……

          posted on 2010-03-11 00:18 李威 閱讀(472) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 伊金霍洛旗| 凤凰县| 惠安县| 荣昌县| 资源县| 柏乡县| 连江县| 靖远县| 肥乡县| 绵竹市| 白玉县| 阿坝县| 邛崃市| 邵东县| 南昌县| 浦北县| 安徽省| 扎赉特旗| 光山县| 濉溪县| 阳泉市| 莫力| 黄梅县| 明光市| 拜城县| 洪雅县| 宁安市| 平果县| 棋牌| 随州市| 潮安县| 西青区| 闸北区| 黑山县| 清流县| 河南省| 通城县| 南丹县| 虹口区| 石楼县| 肃南|