onload js函式不執行的原因分析及解決方法

2021-07-02 20:17:44 字數 1142 閱讀 5801

今天在開發的時候,發現很多頁面的資訊都沒有顯示出來,仔細觀察了之後,發現都是onload的js函式沒有執行的原因。

實際上,在遇到這個問題是,我們只需注意一下狀態列裡哪個位址的執行最久,哪個位址就是禍根了,把它去掉即可。如果是站內,則需要優化一下了,找出其載入慢的原因從而解決問題。

onload的js函式是在網頁載入完畢後才執行

我一直不是很清楚,我以為onload的js函式是在網頁開啟的時候就執行了的,實際上,onload的js函式是在網頁載入完畢後才執行,即它是網頁最後才執行的函式。

了解了這個之後,我們就能理解為什麼有時候onload的js函式沒有執行了,原因很簡單,因為網頁有個別地方沒有載入完,被k住**了。

jquery的$(window).load()與onload事件比較

jquery的$(window).load()方法與onload事件,很大的區別就是執行的順序不同。

對於body.onload事件,是在載入完所有頁面內容才會觸發,我的意思是所有內容,包括,flash等.如果頁面的這些內容很多會讓使用者等待很長時間。

而對於$(document).ready()方法,這個方法只是在頁面所有的dom載入完畢後就會觸發,無疑很大的加快了網頁的速度。

但是對於一些特殊應用,比如的放大縮小,的剪裁。需要網頁所有的內容載入完畢後才執行的呢?我推薦使用$(window).load()方法,這個方法會等到頁面所有內容載入完畢後才會觸發,並且同時又沒有onload事件的弊端。

上面的**會在頁面所有內容載入完成後按先後順序依次執行。

當然不要忘了與之對應的unload方法:

$(window).unload(function() );

上面**會在頁面關閉時引發。

在所有dom載入之前引發js**,這個方法是我在除錯的時候最喜歡的,有時候開發的時候也用這種方法。

對,就是利用js閉包的形式將js**嵌入body,這段**會自動執行,當然也可以直接嵌入js**,這種方式要注意順序問題,如下:

this is the content

this is thecontent

上面兩段**,第二段**當中因為只能解釋到當前**之前的dom,而test並不存在於已經解析的dom數,所以第二段**無法正確顯示。

SpringIOC,DI,MVC的基本執行原理

ioc inversion of controller 控制反轉 作為乙個容器用於儲存spring管理的所有物件 目標 使用springioc容器管理物件 1.需要了解哪些物件是被spring容器管理的.doscanner 方法 讀取配置檔案 我這裡是.propertis檔案,也可以是xml,yml...

記憶體洩露 不包含標頭檔案類的析構函式不執行

今天遇到乙個很詭異的記憶體洩露,記錄如下 1.兩個類,記為a,b。其中a有應指向b的指標 b也有指標成員,指向new出來的空間。兩個類定義如下 1.1檔案a.h class b class a 1.2 檔案a.cpp include a.h a a 1.3 檔案b.hclass b 1.4 檔案b....

不破壞原加密儲存的儲存解密

解密儲存過程 sql2000大於40000的 alter procedure sp decrypt objectname varchar 50 asbegin begin transaction add by playyuer declare objectname1 varchar 100 decl...