欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 全面解析各種瀏覽器網(wǎng)頁中的JS 執(zhí)行順序

 更新時(shí)間:2009年02月17日 17:05:13   作者:  
近來我通過一些測試以全面的解析網(wǎng)頁在各種瀏覽器中的JavaScript代碼的執(zhí)行順序,在這兒做個(gè)記錄。
我們知道javaScript是一種解釋型語言,他的執(zhí)行是自上而下,但是各個(gè)瀏覽器對于至上而下的理解是有細(xì)微差別的,而代碼的上下游也就是程序流又對于程序正確至關(guān)重要,所以我覺得有必要深入理解多個(gè)js塊兒的執(zhí)行順序。
首先得知道有多少方法能把javaScript加入到頁面中呢?常見下述的前2種,其實(shí)還有更多。
1.頁面中直接引入外部js文件:<script src="my.js"></script>
2.頁面中直接寫如js片段<script>alert(1)</script>
3.在js中引入js文件document.write("<scr"+"ipt src='my.js'></scr"+"ipt>");
注意:這時(shí)候"..</script>"必須拆成"</scr"+"ipt>",否則瀏覽器可能會把父js片段關(guān)閉掉,出錯(cuò);
4.同樣在js中引用其他js片段,document.write("<scr"+"ipt>alert(1)</scr"+"ipt>");
你可能覺得這個(gè)并沒有必要,既然已經(jīng)在script中了還套一層干嘛?呵呵,怎么說也是一種寫法,而且它具有其特殊的行為,稍后我們討論到。
5.使用Ajax中的xmlHttpRequest結(jié)合eval()來引入js,我最早在Dojo的代碼見到,寫的詳細(xì)些:
var ajaxRequest = getXmlHttpRequest()//省去各個(gè)瀏覽器得到xmlHttpRequest的部門
ajaxRequest.open("GET","my.js",false);//使用xmlHttpRequest對象Get方法的同步調(diào)用
ajaxRequest.send(null);
sJsFragment = ajax.responseText;//得到字符串為js片段
eval(sJsFragment);//執(zhí)行js片段
注意:這里要求my.js即后來的sJsFragment內(nèi)容得是非常規(guī)范的js,切沒有//開頭的注釋,怎樣檢查js是否規(guī)范呢?去http://jslint.com/
6.無所不能的Dom方法,這個(gè)我最早在Yahoo的前端代碼中見到,非常厲害,也寫的詳細(xì)些:
var oScript = document.createElement("script");//創(chuàng)建一個(gè)Script元素
oScript.src = "my.js";//制定src屬性
document.getElementsByTagName("head")[0].appendChild(oScript);
說明:my.js的內(nèi)容會在oScript加入到文檔中之后獲得并執(zhí)行。仔細(xì)看下這段容易發(fā)現(xiàn)這個(gè)調(diào)用是異步的,可以在文檔載入之后通過事件觸發(fā),我用它變通了一下,作為了xmlHttpRequest的Get方法在跨域取數(shù)時(shí)的替代,獲得了很完美的效果,以后有機(jī)會專門寫篇文。
六種不少吧,可能還會有吧,而且這幾種之間還可能相互嵌套,變化無常。
其中1、2、4、6種方式引入的javaScript的執(zhí)行順序是非常自然的,隨著頁面的載入以及后續(xù)的事件觸發(fā),它們遵守先來后到、而其內(nèi)部自上而下。
我們主要關(guān)注的是第3、4種引入js方法帶來的問題(轉(zhuǎn)帖請注明出處:http://blog.csdn.net/lenel)

相關(guān)文章

  • jsp 自動編譯機(jī)制詳細(xì)介紹

    jsp 自動編譯機(jī)制詳細(xì)介紹

    這篇文章主要介紹了 Jasper的自動檢測實(shí)現(xiàn)的機(jī)制比較簡單,依靠某后臺線程不斷檢測JSP文件與編譯后的class文件的最后修改時(shí)間是否相同,若相同則認(rèn)為沒有改動,但倘若不同則需要重新編譯,需要的朋友可以參考下
    2016-12-12
  • JavaScript(js)設(shè)置默認(rèn)輸入焦點(diǎn)(focus)

    JavaScript(js)設(shè)置默認(rèn)輸入焦點(diǎn)(focus)

    常常會在回復(fù)和引用里使用此功能,即單擊回復(fù)或引用,如讓輸入焦點(diǎn)出現(xiàn)在留言輸入框中,如果使用錨來定位,輸入焦點(diǎn)就不能激活了,需要了解的朋友可以參考下
    2012-12-12
  • javascript,jquery閉包概念分析

    javascript,jquery閉包概念分析

    偶爾聽人說javascript閉包,讓我聯(lián)想起以前學(xué)編譯原理和數(shù)字邏輯里講的閉包,以前上課講的閉包很難懂,而且含有遞歸的意思在里面,現(xiàn)在不想再查看里面的閉包概念。
    2010-06-06
  • 小程序?qū)崿F(xiàn)滑動塊效果

    小程序?qū)崿F(xiàn)滑動塊效果

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)滑動塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 完美解決AJAX跨域問題

    完美解決AJAX跨域問題

    我看到過很多人不愿意去正視ajax所存在的技術(shù)瓶頸,其實(shí)AJAX更應(yīng)該是Ajax而不是AJAX,突出第一個(gè)A是想強(qiáng)調(diào)其實(shí)AJAX發(fā)揚(yáng)的是一種異步傳輸?shù)姆椒ǎ皇蔷唧w到底使用了哪種技術(shù)
    2013-11-11
  • 返回頂部按鈕響應(yīng)滾動且動態(tài)顯示與隱藏

    返回頂部按鈕響應(yīng)滾動且動態(tài)顯示與隱藏

    返回頂部功能在很多的網(wǎng)站上都有,判斷滾動參數(shù)動態(tài)顯示與隱藏,下面的示例很實(shí)用,喜歡的朋友可以收藏下
    2014-10-10
  • javascript關(guān)鍵字加亮加連接

    javascript關(guān)鍵字加亮加連接

    我想在頁面里把想要的關(guān)鍵詞加亮凸出(用顏色區(qū)分出來)顯示,這樣讓客戶一眼能看到重的東西,然后在加亮的關(guān)鍵詞上可以加上超連接.請問高手們怎么實(shí)現(xiàn)宋的功能.就像搜索引擎的那種..搜索關(guān)鍵詞的時(shí)候就顯示紅色的.
    2008-06-06
  • Bootstrap基本插件學(xué)習(xí)筆記之Tooltip提示工具(18)

    Bootstrap基本插件學(xué)習(xí)筆記之Tooltip提示工具(18)

    這篇文章主要為大家詳細(xì)介紹了Bootstrap基本插件學(xué)習(xí)筆記之oltip提示工具的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • js原生實(shí)現(xiàn)FastClick事件的實(shí)例

    js原生實(shí)現(xiàn)FastClick事件的實(shí)例

    下面小編就為大家?guī)硪黄猨s原生實(shí)現(xiàn)FastClick事件的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • js將字符轉(zhuǎn)換為UTF-8字符的工具

    js將字符轉(zhuǎn)換為UTF-8字符的工具

    在下面的文本框中輸入中文文字,按“轉(zhuǎn)化”,即可將其轉(zhuǎn)化為UTF-8字符。
    2010-06-06

最新評論