Javascript判斷頁面是否載入完成
很多時候我們在使用document.getElementById的時候直接在script標籤中獲取物件,然後使用,此時程式會出現該物件為undefined。
- <script>
- var dom = document.getElementById("target");
- alert(dom); // undefined
- </script>
但是如果你把這段程式碼放到文件的最末尾,你再執行他的結果便不是undefined。這到底是為什麼呢?這個我們要從文件的載入來說起,一個html文件的載入都是按照一定順序來載入的,當載入到head部分的js時,他會block(阻塞)下面內容的載入,這個時候我們js中去獲取的物件都還沒有,自然就為undefined。但是如果你將這個程式碼放到最後,頁面按照順序載入,當所有的html都載入完成,再去載入你的js,此時,頁面中的物件已存在,自然不會為undefined。
上面的程式碼是立即執行,所以必須要考慮他所放的位置,但是如果是一個function,那麼在程式碼載入的時候不會執行,只有在需要呼叫它的地方才會去觸發,而在呼叫的地方已經將頁面內容載入完成,所以function裡面去使用上面的程式碼也不會出現undefined。
在jQuery中,我們使用$(document).ready(function(){}),在這個function裡面他的方法為什麼會等到頁面載入完成之後再執行呢,其實我們可以仔細的去看一下他的ready方法。為了能更加清楚的描述出這種方法,我們下面用一個模擬例子來說明:
- jQuery.ready =
- // 判斷瀏覽器
- var browser = window.navigator.userAgent;
- var isIE = false;
- if(/msie/.test(browser.toLowerCase())){
- isIE = true;
- }
- // IE
- if(isIE){
- document.onreadystatechange = function(){
- if(document.readyState == "complete" || document.readyState ==
- f.call();
- }
- };
- }else{ // 非IE
- if(document.addEventListener){
- document.addEventListener("DOMContentLoaded", f, false);
- }
- }
- }
在這裡,ready函式傳遞了另外一個函式,這個f是我們在頁面載入完成之後需要去呼叫的方法。因此在ready函式中,我們要去判斷頁面是否載入完成,再去執行我們ready中的方法。
又是因為瀏覽器的原因,IE又要搞特殊!Mozilla添加了DOMContentLoaded事件,因此我們只需用給document新增該事件,同時將要執行的函式傳遞過去即可。而IE,我麼要去判斷他的onreadystatechange狀態,當他載入完成時為complete或者為loaded的時候,此時我們才可以去呼叫他的方法。
相關推薦
Javascript判斷頁面是否載入完成
很多時候我們在使用document.getElementById的時候直接在script標籤中獲取物件,然後使用,此時程式會出現該物件為undefined。 <script> var dom = document.getElementById("
用 document.readyState == "complete" 判斷頁面是否載入完成。
function MyLoading(falg) { var loading = "<div id='dlading' style='position:absolute;left:0;width:100%;height:100%;top:0;b
用js判斷頁面是否載入完成
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <t
js中常用方法以及document.readyState 判斷頁面是否載入完成 complete和interactive
傳回XML 檔案資料的目前狀況。 基本語法 intState = xmlDocument.readyState; 說 明 這個屬性是隻讀的,傳回值有以下的可能: 0-UNINITIALIZED:XML 物件被產生,但沒有任何檔案被載入。 1-LOADING:載入程式進行中,但檔案尚未開始解析。 2-
JavaScript Html頁面加載完成三種寫法
window blue log script onload document htm scrip javascrip //一、Html頁面加載完成的JS寫法 //1. $(function () { alert("窗體Html頁面加載完成方法一"); }); /
javascript判斷頁面是否在移動設備上打開
avi style 頁面 asc blog navi pos agen log var ua = navigator.userAgent; var ipad = ua.match(/(iPad).*OS\s([\d_]+)/), isIphone =!ipad &
【MFC】轉:在CHtmlView中判斷頁面加載完成
事件處理 什麽 回調 c++ ase BE guid info bool 原帖:http://blog.csdn.net/wangjia184/article/details/3684862 論壇上有人問如何在CHtmlView中判斷頁面加載完成。這裏給出一點想法。首先
JavaScript判斷頁面是第一次訪問,還是重新整理訪問!
JavaScript判斷頁面是第一次訪問,還是重新整理訪問! <script> var firstLogin = {$firstLogin}; var visits = {$visits}; if(firstLogin =
JavaScript判斷裝置型別載入對應網頁並設定兩端通用事件
JavaScript如何判斷裝置型別載入對應網頁並設定通用事件 基本思路: 在網頁入口新增判斷邏輯,如下:首先獲取當前navigator物件的userAgent,通過userAgent判斷當前裝置型別。 ①:如果符合移動端判斷邏輯,則載入移動端入口;否則載入pc端入口 ②:通用事
當jsp頁面完全載入完成後執行一個js函式
function openTheIndexPage() { openMyURIWithCid(true, 'root', 'IDX', "iframe/dispatch.jsp?url=tdc/zhk/impctrlobjinf/index/index.jsp", '首頁',
selenium之如何等待頁面元素載入完成
webdriver中我們用兩種方式進行等待:明確的等待和隱性的等待。 明確的等待 明確的等待是指在程式碼進行下一步操作之前等待某一個條件的發生。最不好的情況是使用Thread.sleep()去設定一段確認的時間去等待。但為什麼說最不好呢?因為一個元素的載入時
selenium webdriver(Appium)如何等待頁面元素載入完成
selenium webdriver學習(十一)------------如何等待頁面元素載入完成 web的自動化測試中,我們經常會遇到這樣一種情況:當我們的程式執行時需要頁面某個元素,而此時這個元素還未載入完成,這時我們的程式就會報錯。怎麼辦?等待。等待元素出現後再進行
selenium webdriver學習(十一)-怎麼等待頁面元素載入完成
selenium webdriver學習(十一)------------如何等待頁面元素載入完成web的自動化測試中,我們經常會遇到這樣一種情況:當我們的程式執行時需要頁面某個元素,而此時這個元素還未載入完成,這時我們的程式就會報錯。怎麼辦?等待。等待元素出現後再進行對這個
當頁面完全載入完成後執行一個js函式
1、在body中用onload: ? 1 <body onload="myfunction()"> 2、在指令碼中用window.onload: ? 1 2 3 4 5 6 7 8 <script type="text/ja
WebDriver_Java(等待頁面元素載入完成)
web的自動化測試中,我們經常會遇到這樣一種情況:當我們的程式執行時需要頁面某個元素,而此時這個元素還未載入完成,這時我們的程式就會報錯。怎麼辦?等待。等待元素出現後再進行對這個元素的操作。 在selenium-webdriver中我們用兩種方式進行等待:明確的等待和隱性的
判斷圖片是否載入完成的三種方式
有時需要獲取圖片的尺寸,這需要在圖片載入完成以後才可以。有三種方式實現,下面一一介紹。 一、load事件 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8">
JavaScript--判斷頁面是否存在某個類名
// 無地址時,圖片固定不能滑動 var lengthNoaddress = $(".noAddress").length; console.log(lengthNoaddress);
判斷jQuery 是否載入完成 沒完成繼續判斷 解決方案
一個比較頭疼的事情,有些外掛繫結dom物件的,然後又用jq的語法,比如你在vue+node的時候,基本就要百度方法 我提供一個另類解決方案 比如你下了個輪播圖外掛 a,js 你開啟他的a.js然後 用 function lbt(){} 把整個JS包起來在頭部 再
判斷 iframe 是否載入完成的完美方法
一般來說,我們判斷 iframe 是否載入完成其實與判斷 JavaScript 檔案是否載入完成採用的方法很類似: var iframe = document.createElement("iframe"); iframe.src ="http://www.plan
js判斷圖片是否載入完成
<span style="font-family:Microsoft YaHei;font-size:12px;"><!DOCTYPE html> <html lang