国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Javascript在網(wǎng)頁頁面加載時(shí)的執(zhí)行順序

一、在HTML中嵌入Javasript的方法

  1. 直接在Javascript代碼放在標(biāo)記對<script>和</script>之間
  2. 由<script />標(biāo)記的src屬性制定外部的js文件
  3. 放在事件處理程序中,比如:<p onclick="alert(‘我是由onclick事件執(zhí)行的Javascript‘)">點(diǎn)擊我</p>
  4. 作為URL的主體,這個(gè)URL使用特殊的Javascript:協(xié)議,比如:<a href="javascript:alert(‘我是由javascript:協(xié)議執(zhí)行的javascript‘)">點(diǎn)擊我</a>
  5. 利用javascript本身的document.write()方法寫入新的javascript代碼
  6. 利用Ajax異步獲取javascript代碼,然后執(zhí)行

第3種和第4種方法寫入的Javascript需要觸發(fā)才能執(zhí)行,所以除非特別設(shè)置,否則頁面加載時(shí)不會執(zhí)行。

二、Javascript在頁面的執(zhí)行順序

  1. 頁面上的Javascript代碼是HTML文檔的一部分,所以Javascript在頁面裝載時(shí)執(zhí)行的順序就是其引入標(biāo)記<script />的出現(xiàn)順序, <script />標(biāo)記里面的或者通過src引入的外部JS,都是按照其語句出現(xiàn)的順序執(zhí)行,而且執(zhí)行過程是文檔裝載的一部分。
  2. 每個(gè)腳本定義的全局變量和函數(shù),都可以被后面執(zhí)行的腳本所調(diào)用。
  3. 變量的調(diào)用,必須是前面已經(jīng)聲明,否則獲取的變量值是undefined。
    <script type="text/javscrpt">//<![CDATA[    alert(tmp);  //輸出 undefined    var tmp = 1;    alert(tmp);  //輸出 1    //]]></script>
  4. 同一段腳本,函數(shù)定義可以出現(xiàn)在函數(shù)調(diào)用的后面,但是如果是分別在兩段代碼,且函數(shù)調(diào)用在第一段代碼中,則會報(bào)函數(shù)未定義錯(cuò)誤。
    <script type="text/javscrpt">//<![CDATA[    aa();            //瀏覽器報(bào)錯(cuò)    //]]></script>    <script type="text/javscrpt">//<![CDATA[    aa();			//輸出 1     function aa(){alert(1);}    //]]></script>
  5. document.write()會把輸出寫入到腳本文檔所在的位置,瀏覽器解析完documemt.write()所在文檔內(nèi)容后,繼續(xù)解析document.write()輸出的內(nèi)容,然后在繼續(xù)解析HTML文檔。
    <script type="text/javascript">//<![CDATA[    document.write(‘<script type="text/javascript" src="test.js"><\/script>‘);    document.write(‘<script type="text/javascript">‘);    document.write(‘a(chǎn)lert(2);‘)    document.write(‘a(chǎn)lert("我是" + tmpStr);‘);    document.write(‘<\/script>‘);    //]]></script>    <script type="text/javascript">//<![CDATA[    alert(3);    //]]></script>

    test.js的內(nèi)容是:

    var tmpStr = 1;    alert(tmpStr);
    • 在Firefox和Opera中的彈出值的順序是:1、2、我是1、3
    • 在IE中彈出值的順序是:2、1、3,同時(shí)瀏覽器報(bào)錯(cuò):tmpStr未定義

    原因可能是IE在document.write時(shí),并未等待加載SRC中的Javascript代碼完畢后,才執(zhí)行下一行,所以導(dǎo)致2先彈出,并且執(zhí)行到document.write(’document.write("我是" + tmpStr)’)調(diào)用tmpStr時(shí),tmpStr并未定義,從而報(bào)錯(cuò)。

    解決這個(gè)問題,可以利用HTML解析是解析完一個(gè)HTML標(biāo)簽,再執(zhí)行下一個(gè)的原理,把代碼拆分來實(shí)現(xiàn):

    <script type="text/javascript">//<![CDATA[    document.write(‘<script type="text/javascript" src="test.js"><\/script>‘);    //]]></script>    <script type="text/javascript">//<![CDATA[    document.write(‘<script type="text/javascript">‘);    document.write(‘a(chǎn)lert(2);‘)    document.write(‘a(chǎn)lert("我是" + tmpStr);‘);    document.write(‘<\/script>‘);    //]]></script>    <script type="text/javascript">//<![CDATA[    alert(3);    //]]></script>

    這樣IE下和其他瀏覽器輸出值的順序都是一直的了:1、2、我是1、3。

三、如何改變Javascript在頁面的執(zhí)行順序

  1. 利用onload
    <script type="text/javascript">//<![CDATA[    window.onload = f;    function f(){alert(1);}    alert(2);    //]]></script>

    輸出值順序是 2、1。

    需要注意的是,如果存在多個(gè)winodws.onload的話,只有最有一個(gè)生效,解決這個(gè)辦法是:

    window.onload = function(){f();f1();f2();.....}

    利用2級DOM事件類型

    if(document.addEventListener){    window.addEventListener(‘load‘,f,false);    window.addEventListener(‘load‘,f1,false);    ...    }else{    window.attachEvent(‘onload‘,f);    window.attachEvent(‘onload‘,f1);    ...    }
  2. IE中可以利用deferdefer作用是把代碼加載下來,并不立即執(zhí)行,等文檔裝載完畢之后再執(zhí)行,有點(diǎn)類似onload,但是沒有onload那樣的局限性,可以重復(fù)使用,但是只在IE中有效,所以上面的例子可以修改成為
    <script type="text/javascript">//<![CDATA[    document.write(‘<script type="text/javascript" src="test.js"><\/script>‘);    document.write(‘<script type="text/javascript" defer="defer">‘);    document.write(‘a(chǎn)lert(2);‘)    document.write(‘a(chǎn)lert("我是" + tmpStr);‘);    document.write(‘<\/script>‘);    //]]></script>    <script type="text/javascript">//<![CDATA[    alert(3);    //]]></script>

    這樣IE就不報(bào)錯(cuò)了,輸出值的順序變成:1、3、2、我是1

  3. 利用Ajax。
    因?yàn)閤mlhttpRequest能判斷外部文檔加載的狀態(tài),所以能夠改變代碼的加載順序。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JavaScript代碼應(yīng)該放在HTML代碼哪個(gè)位置比較好?
jQuery經(jīng)典面試題及答案精選
怎樣在Web開發(fā)中完美控制IE標(biāo)題欄
在頁面加載完后執(zhí)行javascript代碼 --網(wǎng)上download
javascript---淺析注冊事件. - 前端技術(shù)
JavaScript連載27-文檔加載模式以及元素獲取
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服