1. 程式人生 > >JS頁面載入完畢後執行的多種方式和比較

JS頁面載入完畢後執行的多種方式和比較

做專案的時候可能會遇到這種情況:

  一個頁面的中定義了多個onload事件,那麼在此定義window.onload函式的時候可能會不生效或者多個onload之間覆蓋的現象.
  有的朋友肯定會說用jQuery的$$(document).ready(function(){})(它的另外兩種寫法:$(document).ready(function(){})和$(function(){}))的方式, 其實這個函式和javascript的onload事件是有區別的,那麼來看看他們的區別:

他們的主要的區別有兩點:
1.執行時機
window.onload方法是在網頁中的所有的元素(包括元素的所有關聯檔案)都完全載入到瀏覽器之後才執行。而通過jQuery中的$(document).ready()方法註冊的事件處理程式,只要在DOM完全就緒時,就可以呼叫了,比如一張圖片只要標籤完成,不用等這個圖片載入完成,就可以設定圖片的寬高的屬性或樣式等。
2.$(document).ready()方法可以多次使用而註冊不同的事件處理程式,而window.onload一次只能儲存對一個函式的引用,多次繫結函式只會覆蓋前面的函式。
先來看window.onload方法在一個頁面上註冊兩次會是什麼樣的結果:

1.function one(){  
2.    alert("one");  
3.}  
4.function two(){  
5.    alert("two");  
6.}  
7.window.onload = two ;  
8.window.onload = one ; 

上面的程式碼執行後,會彈出“one”。
再來看看$(document).ready()方法分兩次呼叫會是什麼結果。

1.function one(){  
2.    alert("one");  
3.}  
4.function two(){  
5.    alert("two");  
6.
} 7.$(document).ready(function(){ 8. one(); 9.}); 10.$(document).ready(function(){ 11. two(); 12.});

上面的程式碼執行後,會分別彈出“one”和“two”。
那如果既要頁面完全載入完後執行,而且要可以執行多次,這樣上面的兩個方法就都不能滿足了,所以有了下面的實現:

1.        var loadFunc = function(func){  
2.            if (document.addEventListener) {  
3.
window.addEventListener("load", func, false); 4. } 5. else if (document.attachEvent) { 6. window.attachEvent("onload", func); 7. } 8. } 9. 10. loadFunc(function(){ 11. alert(1); 12. }) 13. loadFunc(function(){ 14. alert(2); 15. })

loadFunc(function(){…});想加幾個就幾個,所以上面的結果是先彈出1再彈出2。

相關推薦

JS頁面載入完畢執行多種方式比較

做專案的時候可能會遇到這種情況:   一個頁面的中定義了多個onload事件,那麼在此定義window.onload函式的時候可能會不生效或者多個onload之間覆蓋的現象.   有的朋友肯定會說用jQuery的$$(document).ready(func

在HTML頁面載入完畢執行某個js

在DOM載入完就可以執行(比window.onload更早)。在同一頁面中可以多次出現.ready() 兩者主要區別:Window.onload=function (){}: 當一個文件完全下載到瀏覽器中時,才會觸發window.onload事件。這意味著頁面上的全部元素對js而言都是可以操

HTML頁面載入完畢執行某個js

1、js方法: <script type="text/javascript"> window.onload=function(){ alert("html頁面載入完成後一"); } </script> 2、jQuery方法:(需要引用j

兩種方法實現在HTML頁面載入完畢執行某個js

Js方法:<script type=”text/javascript”> window.onload=function (){ var userName=”xiaoming”; alert(userName); } </script&

頁面載入完成執行JS的5種方式

在js和jquery使用中,經常使用到頁面載入完成後執行某一方法。通過整理,大概是五種方式。 1.jQuery的$( function(){} ); 2.jQuery的$(document).rea

js頁面載入完成執行的幾種方式執行順序

在js和jquery使用中,經常使用到頁面載入完成後執行某一方法。通過整理,大概是五種方式(其中有的只是書寫方式不一樣)。 1:使用jQuery的$(function){};2:使用jquery的$(document).ready(function(){});前兩者本質上沒

Vue.js 關於頁面載入完成執行一個方法的問題

首先我們會想著在mounted或者created裡面加入想要執行的方法,但是有的時候會遇到在你執行這個方法的時候,頁面還並沒有被渲染完成,所以就會出現這個方法在匹配頁面標籤報錯的情況。 解決思路: 1.通過子頁面呼叫父頁面的方法,因為在子頁面開始渲染的時候,你的父頁面肯定

js頁面加載執行的幾種方式

on() document 順序 nbsp jquery 加載 事件 function 頁面 1:$(function){}; 2:$(document).ready(function(){}); 3:$(window).load(function(){}); 4:wind

如何在頁面載入完畢獲取圖片高度或寬度問題

日前,本技術屌絲又遇到了一個很有意思的問題,應專案要求,需要在頁面載入完畢之後獲取圖片的高度,以此來調整圖片上面的覆蓋層相對於圖片頂端的位置。 但在jquery(function(){  /*XXXXXX*/});裡面寫了之後發現不是很理想,因為當jquery準備就緒的時候

jquery頁面載入完成執行方法

引入jquery 1、$(function(){   $("#a").click(function(){     //adding your code here   }); }); 2、$

js頁面載入觸發的事件 document.write document.onload的區別

document.ready和onload的區別——JavaScript文件載入完成事件 頁面載入完成有兩種事件: 一是ready,表示文件結構已經載入完成(不包含圖片等非文字媒體檔案); 二是onload,指示頁面包含圖片等檔案在內的所有元素都載入完成。 1、Dom R

有關js頁面載入的一些解析,loadready

用jQuery的大多數開始都是這麼寫指令碼的 $(function(){ //....code.... }); 比如: $(function(){ $("#btn1").click({ $("

當jsp頁面完全載入完成執行一個js函式

    function openTheIndexPage() {             openMyURIWithCid(true, 'root', 'IDX', "iframe/dispatch.jsp?url=tdc/zhk/impctrlobjinf/index/index.jsp", '首頁',

頁面完全載入完成執行一個js函式

1、在body中用onload: ? 1 <body onload="myfunction()"> 2、在指令碼中用window.onload: ? 1 2 3 4 5 6 7 8 <script type="text/ja

頁面載入立刻執行JS的兩種方法

方式一:window.onload:當一個文件完全下載到瀏覽器中時,才會觸發window.onload事件。這意味著頁面上的全部元素對js而言都是可以操作的,也就是說頁面上的所有元素載入完畢才會執行。這種情況對編寫功能性程式碼非常有利,因為無需考慮載入的次序。window.o

頁面載入自動執行一個方法的js程式碼

1、在body中用onload: <body onload="myfunction()"> 2、在指令碼中用window.onlo <script type="text/ja

js中如何控制所有頁面載入完成,再執行某些方法

做頁面時經常會遇到當前頁面載入完成後,執行某些初始化工作。這時候就要知道如何判斷頁面(包括IFRAME)已經載入完成,程式碼如下: <script language="javascript">       document.onreadystatechange

簡單實用的JS實現頁面載入完畢之前loading提示效果(相容性較強的loading載入程式碼)

一種簡單實用的JS實現頁面載入完畢之前loading提示效果 做成js呼叫即可: 一、JS程式碼: var _PageHeight = document.documentElement.clientHeight, _PageWidth = documen

js實現所有非同步請求全部載入完畢,loading效果消失

  在實際開發中,一定有情況是這樣的,一個頁面我們有多個地方請求了ajax,在這種情況下,我們要實現資料沒來之前出現我們炫酷的loading效果,而且要等到所有的ajax都請求完畢後,才讓我們的loading效果消失,那麼問題來了,每個ajax請求資料的時間都是不確定的,我們這個loading效果結束的

Python環境搭建多種方式的使用進行程式的執行

Python環境搭建後,可以使用多種方式進行程式的執行。 第一種: 進入CMD命令提示符 輸入python 進入python環境(可以使用Ctrl+C退出) 輸入print("hello") 回車顯示結果 第二種方法: 使用編輯器,當然編輯器有多種,比如VS2017,Notepad++。