1.頁面加載后完成
windows.onload = function(){
alert("執行");
}
2.頁面加載前完成
$(document).ready(function() {
alert("執行");
}
**:需要注意的是,如果在函數中有ajax方法,
問題一:今天一直想不通的問題,我的ajax明明在頁面前面為什么直到我的頁面代碼都執行完了我的后台數據才獲取,然而,此時的數據已經不能服務於的html頁面了。
$.ajax({
url:"../data/test.txt",
contentType:"application/json",
type:"POST",
cache:false,
async:true,
beforeSend:function(){
$('#queryForm').hide();
},
success:function(result){
obj=result;
},
complete:function(){
}
});
1.
async:true,這種情況為異步方式,當ajax發送請求前,會先執行ajax塊中beforeSend里面的代碼,如果beforeSend里面有DOM操作,就可以立即對DOM進行渲染,當ajax發送請求后,在等待server端返回的數據的過程中,程序會繼續執行ajax塊外面的代碼,直到服務器返回正確的結果才會去執行success的方法。因此,在執行success前DOM隱藏且obj=0。
2.
async:false,這時ajax的請求是同步的。這樣的話,當ajax發送請求前,會先執行ajax塊中beforeSend里面的代碼,如果beforeSend里面有DOM操作,不會立即對DOM進行渲染,而是等到complete執行完之后,才會渲染DOM,當ajax發送請求后只有ajax請求成功之后,才會執行ajax塊外面的js代碼。因此,在執行完complete之后DOM才隱藏且obj=result。
問題二:關於$(document).ready(){}函數的使用,其實我現在還沒有太明白,為什么一定要加它。然后在https://blog.csdn.net/qq_26291823/article/details/52573621博客里面找到了比較好的解釋:
第一點:
你好,$().ready作用於所有html的dom元素加載完畢之后,尤其是動態的html,在不確定html文檔是否加載完成的情況下,需要使用,如果不使用,可能會出現,dom元素未加載完成,如果直接使用$("div")防止獲取的dom為null,所以建議必須寫上
其二,建議jquery的代碼寫在$().ready中,這是一個jquery的環境,也就是說在他中的代碼可以被jquery識別,為了防止jquery庫出現錯誤
第二點:
window.onload = function(){ alert("welcome"); }
這樣的寫法作用是希望在頁面加載完,自動執行定義js代碼(function)。
$(document).ready(function(){.... })這個函數是用來取代頁面中的window.onload;
document.ready()和傳統的方法<body onload=”load()”> 相似,不同的是onload()的方法是在頁面加載完成后才發生,這包括DOM元素和其他頁面元素(例如圖片)的加載,因此,使用document.ready()方法的執行速度比onload()的方法要快。
Javascript 只有在DOM元素已經定義以后才可以對其執行某種操作,jQuery使用document.ready來保證所要執行的代碼是在DOM元素被加載完成的情況下執行。
