windows.onload
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元素被加载完成的情况下执行。