国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

如何讓頁面加載完成后執行js

2019-11-20 22:36:37
字體:
來源:轉載
供稿:網友

在很多情況下,js代碼需要設置為在頁面加載之后才去執行,如果在頁面沒有加載完畢就執行js代碼,很容易出現報錯情況,因為頁面中的某些dom根本沒有加載完畢。本文章向大家介紹如何讓js腳本在頁面加載完后再執行的幾種方法。需要的朋友可以參考一下。

javascript 當頁面dom模型加載完成后才執行javascript

不能使用<body onload="">

加上 defer 等于在頁面完全在入后再執行,相當于 window.onload ,但應用上比 window.onload 更靈活

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=" http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body><script defer="defer">alert("頁面加載完我才執行的")</script>先看到這段話 然后再執行上面的 JS 如果去掉上面的 defer="defer" 那么會先執行JS 在看到這段話</body></html>

方法1:使用defer

<script defer="defer" language="javascript"></script>
//或者
<script defer language="javascript"></script>

但這種方法只有IE支持,其他瀏覽器不識別defer 這種方法不靠譜
 
方法2:window.onload

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

但這個方法在IE中只能在一個地方調用,假如2個地方調用,后面調用的就會把前面的添加的覆蓋掉; 

方法3:jQuery方法,需要引用jQuery文件。

<script type=”text/javascript”>$(document).ready(function (){  var userName=”xiaoming”;  alert(userName);});</script>

下面我們介紹一下Window.onload=function (){}與$(document).ready(function (){})的區別:
在Jquery里面,我們可以看到兩種寫法:$(function(){}) 和$(document).ready(function(){})
這兩個方法的效果都是一樣的,都是在dom文檔樹加載完之后執行一個函數(注意,這里面的文檔樹加載完不代表全部文件加載完)。
而window.onload是在dom文檔樹加載完和所有文件加載完之后執行一個函數。也就是說$(document).ready要比window.onload先執行。
那么Jquery里面$(document).ready函數的內部是怎么實現的呢?下面我們就來看看:
我們來為document添加一個ready函數:

document.ready = function (callback) {      ///兼容FF,Google      if (document.addEventListener) {        document.addEventListener('DOMContentLoaded', function () {          document.removeEventListener('DOMContentLoaded', arguments.callee, false);          callback();        }, false)      }       //兼容IE      else if (document.attachEvent) {        document.attachEvent('onreadystatechange', function () {           if (document.readyState == "complete") {                document.detachEvent("onreadystatechange", arguments.callee);                callback();            }        })      }      else if (document.lastChild == document.body) {        callback();      }    }

document.ready這個函數是實現了。我們再來驗證一下最上面所說的“ready要比onload先執行”:

window.onload = function () {      alert('onload');    };    document.ready(function () {      alert('ready');    });

執行這段代碼之后,你會看到瀏覽器里面會先彈出“ready”,在彈出onload。
這個大家還是親手試試吧!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岚皋县| 华阴市| 溆浦县| 金山区| 南川市| 措勤县| 台北市| 会昌县| 北碚区| 安溪县| 临泽县| 阿巴嘎旗| 治县。| 从江县| 湖北省| 永新县| 特克斯县| 格尔木市| 庆安县| 道孚县| 东港市| 乐山市| 开化县| 大名县| 安阳市| 资阳市| 社会| 榆社县| 扎兰屯市| 淮阳县| 武宁县| 万年县| 修水县| 盐山县| 洱源县| 长海县| 婺源县| 临泉县| 定结县| 正宁县| 滦南县|