引用公共頁面的js函數報錯


  對於網站來說很多頁面之間都有着大量的共享模塊,如頁頭,頁腳和用戶欄等。很多時候為了方便、省事,我們在公共模塊寫函數,然后在別的頁面里調用。但我們在引用公共的js函數時,有些可以引用,有些卻報錯;這是因為js加載的問題,即當前頁面加載完,但有些公共頁面卻沒有加載完就引用公共的js,就會報這個函數沒有找到。


引用公共頁頭的js

 

 結果如下:

 

引用公共頁腳的js

 

 結果如下:

從上面的兩個例子,我們可以知道js加載順序是從上往下的加的,頁頭先加載-——當前頁面——頁腳最后,所有當前頁面引用了沒有加載完成的頁腳js就會報“f_public is not defined”

 

 

解決方法如下:

$(document).ready(function () {
        f_public();
})

當 DOM(文檔對象模型) 已經加載,並且頁面(包括圖像)已經完全呈現時,會發生 ready 事件;即等頁腳加載完才調用這個函數。

 

 

js中頁面執行順序

1:使用jQuery的$(function){};

2:使用jquery的$(document).ready(function(){});前兩者本質上沒有區別,第1種是第2種的簡寫方式。兩個是document加載完成后就執行方法。

3:使用jQuery的$(window).load(function(){});

4:使用window.onload = function(){} 第3種和第4種都是等到整個window加載完成執行方法體。兩者也沒有區別,只是一個使用dom對象,一個使用jQuery對象。

5:在標簽上靜態綁定onload事件,<body onload="aaa()">等待body加載完成,就會執行aaa()方法。

那么,這五種方式,執行的先后順序是怎么樣的呢?

通過下方代碼驗證發現:

        使用1:jQuery的$(function){}和2:jquery的$(document).ready(function(){});無論位置放置在哪里,總是優先其余三種方式(原因是:這兩種方式是在document加載完成后就執行,后三種是等到整個  window頁面加載完成后才執行),這兩者之間的執行順序是誰在上方誰優先執行。

        使用3:jQuery的$(window).load(function(){});

    4:window.onload = function bbb(){}這兩種方式,總是優先於<body onload="aaa()">執行。他們兩者執行順序也是根據誰在上方誰先執行。

       使用5:<body onload="aaa()">總是最后執行。

<script type='text/javascript'>

  window.onload = function(){
    alert("頁面加載完成====》onload");
  }

  $(window).load(function(){
    alert("jquery===》window load" );
  })

  $(document).ready(function () {
    alert("jquery====》document ready");
  });

  $(function(){
    alert("jquery====》document onload");
  });

  function aaa(){
    alert("靜態標簽====》onload");
  }

</script>

<body onload="aaa()">

</body>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM