1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          onreadystatechange和onload區別分析

          來源:互聯網轉載 時間:2024-01-29 07:50:54

          onreadystatechange和onload區別分析

          script加載

          IE的script 元素只支持onreadystatechange事件,不支持onload事件。

          FireFox,Opera, Chorme, IE11+ 和Safari3+的script 元素不支持onreadystatechange事件,只支持onload事件。

          如果要在一個<script src="xx.js"> 加載完成執行一個操作,FF使用onload事件就行了,IE下則要結合onreadystatechange事件和this.readyState

          以下是IE的一個例子:

          1<script type="text/javascript"src="xx.xx"onreadstatechange="if(this.readyState=='load') alert('loaded');"></script>

          this.readyState的值為'loaded'或者'complete'都可以表示這個script已經加載完成.

          【Firefox, Opera, Chorme, IE11+ 和Safari3+會在<script>節點接收完成之后發出一個load 事件。你可以監聽這一事件,以得到腳本準備好的通知】

          【Internet Explorer(IE10及以下版本)支持另一種實現方式,它發出一個readystatechange事件。<script>元素有一個readyState屬性,它的值隨著下載外部文件的過程而改變。readyState 有五種取值】

          微軟文檔上說,在<script>元素的生命周期中,readyState 的這些取值不一定全部出現,但并沒有指出哪些取值總會被用到。實踐中,我們最感興趣的是“loaded”和“complete”狀態。Internet Explorer 對這兩個readyState值所表示的最終狀態并不一致,有時<script>元素會得到“loaded”卻從不出現“complete”,但另外一些情況下出現“complete”而用不到“loaded”。最安全的辦法就是在readystatechange 事件中檢查這兩種狀態,并且當其中一種狀態出現時,刪除readystatechange事件句柄(保證事件不會被處理兩次)

          var script = document.createElement("script")script.type = "text/javascript";//Internet Explorerscript.onreadystatechange = function(){    if (script.readyState == "loaded" || script.readyState == "complete"){        script.onreadystatechange = null;        alert("script loaded.");    }};script.src = "file1.js";document.getElementsByTagName_r("head")[0].appendChild(script);

          如何結合IE和FF等的區別?參考一下jquery的源碼:

          var script = document.createElement('script');script.src="xx.js";script.onload = script.onreadystatechange = function(){    if(    ! this.readyState     //這是FF的判斷語句,因為ff下沒有readyState這個值,IE的readyState肯定有值                || this.readyState=='loaded' || this.readyState=='complete'   // 這是IE的判斷語句    ){         alert('loaded');    }};

          上面是根據dom加載完去判斷,如果根據dom未加載完去判斷如下:

          var script = document.createElement('script');script.src="xx.js";script.onload = script.onreadystatechange = function(){    if( this.readyState && this.readyState=='loading' ){         return    }  alert('loaded')};

          大多數情況下,你希望調用一個函數就可以實現JavaScript 文件的動態加載。下面的函數封裝了標準實現和IE 實現所需的功能:

          function loadScript(url, callback){    var script = document.createElement ("script")    script.type = "text/javascript";    if (script.readyState){ //IE        script.onreadystatechange = function(){            if (script.readyState == "loaded" || script.readyState == "complete"){                script.onreadystatechange = null;                callback();            }        };    } else { //Others        script.onload = function(){            callback();        };    }    script.src = url;    document.getElementsByTagName_r("head")[0].appendChild(script);}

          document加載

          一個documentDocument.readyState屬性描述了文檔的加載狀態。

          loading / 正在加載:document仍在加載。

          interactive / 可交互:文檔已被解析,"正在加載"狀態結束,但是諸如圖像,樣式表和框架之類的子資源仍在加載。

          complete / loaded 完成:文檔和所有子資源已完成加載。表示load狀態的事件即將被觸發。

          當該屬性值發生變化時,會在document對象上觸發readystatechange事件。

          (當document文檔正在加載時,返回"loading"。當文檔結束渲染但在加載內嵌資源時,返回"interactive",并引發DOMContentLoaded事件。當文檔加載完成時,返回"complete",并引發load事件。)

          語法

          var string = document.readyState;

          例子

          // 模擬DOMContentLoadeddocument.onreadystatechange = function () {  if (document.readyState == "interactive") {    initApplication();  }}// 模擬 load事件document.onreadystatechange = function () {  if (document.readyState == "complete") {    initApplication();  }}

          參考

          document.readyState

          Web動態加載JS外部文件(script標簽)

          標簽:onreadystatechange-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          木門的十大品牌?1 .蒙田木門蒙恬木門成立于1989年,是木門行業的領導品牌。;的木門行業。它生產的各種木材質量優良,深受許多消費者的喜愛。2.塔塔木門塔塔門業成立于1999年,隸屬于北京億泰同創實業有限公司旗下品牌。amp這是一個最早從事研發的企業之一。amp在研發和生產室內門,具有卓越的品質和巨大的市場競爭力。3.展志天華木門展志天華是一家專注木業26年的大型家居建材企業。作為航天部門的合作伙...

          兒童短頭發怎么扎?1.將短發兩邊扎成小球。這種綁法簡單利落,守氣劉海有一種瞬間被萌化的感覺,簡直萌到骨子里了。2、短發寶寶也可以考慮這個丸子頭!把頭發都扎起來綁個皮筋固定就行了!這是一款超級流行的兒童發型!尤其是炎熱的夏天,讓小公主立馬變得涼快很多!3、帶上一個非常簡單的寶寶短發扎法,一個發夾就可以輕松搞定!就把頭發別在一邊,劉海是斜的。你不 不一定要穿裙子才能成為淑女!4.斜扎一個馬尾,自然流露...

          微信sns文件夾是什么?微信SNS文件夾是存儲微信使用過程中保存的圖片或相關數據緩存的文件夾。我們可以及時清理微信使用過程中產生的緩存數據,保持手機的流暢性。清理微信緩存數據的具體步驟如下:1。首先,我們打開手機上的微信應用程序,然后點擊本頁下面的“設置”選項。2. 然后單擊此頁底部的“常規”選項。3. 然后單擊此頁中的“存儲空間”列。4. 然后我們可以在這個頁面看到“清理微信緩存”按鈕,然后我們...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>