window.onload及dom ready测试

测试代码段一:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="http://www.twitter.com/test.css">
	<script>
		console.log(‘loading script content.‘)

		window.onload = function  () {
			console.log(‘onload 1.‘)
		}

		document.addEventListener(‘DOMContentLoaded‘,function(){
			console.log(‘dom is ready.‘);
		});

		addOnload(function(){
			console.log(‘addOnload 1.‘);
		});

		addOnload(function(){
			console.log(‘addOnload 2.‘);
		});

		addOnload(function(){
			console.log(‘addOnload 3.‘);
		});

		function addOnload(func){
			var last = window.onload;
			window.onload = function(){
				if(last) last();

				func();
			}

		}
	</script>

</head>
<body>

	<img src="http://www.twitter.com/test.jpg">

</body>
</html>

故意链接到墙外,测试结果如下:
1. 第6行会阻塞第7行, (放在script前的link标签会阻塞script,如果把link放在script之后,则不会阻塞)

2. body中的img标签会阻塞window.onload事件。

3. body中的img标签不会阻塞dom ready事件。

二。 测试代码段2.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="underscore.js"></script>
	<script>
		(function(global){
			var funcs = [];

			document.addEventListener(‘DOMContentLoaded‘,function(){
				console.log(‘dom is ready.‘);
				_(funcs).each(function(f){
					f();
				})

			});

			global.addOnReady = function(f){
				funcs.push(f);
			}
		})(window);

		window.onload = function(){
			console.log(‘window onload.‘);
		};

		addOnReady(function(){console.log(‘ready 1.‘)});
		addOnReady(function(){console.log(‘ready 2.‘)});
		addOnReady(function(){console.log(‘ready 3.‘)});

	</script>

</head>
<body>

	<img src="http://www.twitter.com/test.jpg">
	<script type="text/javascript">
		addOnReady(function(){console.log(‘ready 4.‘)});
	</script>
</body>
</html>

1. body中的img标签不会阻塞img标签后面的script
2. dom ready事件无视img标签,在页面打开瞬间控制台会打印出ready 1, ready 2 ready 3 ready 4!

代码段二的输出结果如下:

dom is ready.
onload.html:28 ready 1.
onload.html:29 ready 2.
onload.html:30 ready 3.
onload.html:39 ready 4.
onload.html:37 GET https://www.twitter.com/test.jpg net::ERR_CONNECTION_TIMED_OUT
onload.html:25 window onload.

时间: 2024-10-26 11:37:41

window.onload及dom ready测试的相关文章

【前端】window.onload 和 $(document).ready() 的区别

... 在Stack Overflow上看到了这个问题,自己翻译了过来. The onload event is a standard event in the DOM, while the ready event is specific to jQuery. window.onload 是DOM中的标准事件,而$(document).ready() 是jQuery中的事件. The ready event occurs after the HTML document has been load

window.onload与$(document).ready()的区别

<锋利的jQuery>上摘抄下来: window.onload $(document).ready() 执行时机 必须等待网页中所有的内容加载完毕后(包括图片)才能执行 网页中所有DOM结果绘制完毕后就执行,可能DOM元素关联的东西并没有加载完 编写个数 不能同时编写多个 以下代码无法正确执行:window.load = function() {  alert("test1"); }; window.load = function() {  alert("test

jquery学习笔记一之window.onload与$(document).ready()区别

1.window.onload与$(document).ready()区别 执行时机:前者必须等待网页中所有的内容加载完毕后(包括图片)才能执行,后者 网页中说有的Dom结构绘制完毕后就执行,可能Dom元素关联的内容并没有加载完成. <!DOCTYPE html> <html> <head> <title>test</title> <script type="text/javascript" src="js/j

window.onload与$(document).ready()

在我们编写javascript代码的时候,我们开始会这样写的: window.onload = function (){ //编写代码 } 我并不知道为什么会是这样写的,看着别人这样写我也就这样写.今天我就来简单的说说:谈到onload我们要讲HTML的执行顺序.HTML的执行顺序是至上到下的,除非你特别的说明,javascript不会等到等到页面加载加载完成后才执行的. 例如:网页中有这样的一行代码 <p id="name">My name is Aaron</p&

浏览器加载模式:window.onload和$(document).ready()的区别(详解)

jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: window.onload = function () {}; //JavaScript等待加载 $(document).ready(function () {}); //jQuery等待加载load和ready区别 window.onload $(document).ready() 执行时机 必须等待网页

window.onload和document.ready的区别

window.onload和document.ready虽然两个方法的运行效果都一样,但他们之间是存在着区别的: 一.从执行的时间 window.onload在dom文档结构加载完毕以后就可以执行,不必等到页面中的其他文件(例如图片等文件)都加载完毕. 而document.ready则是必须要等到dom文档结构和其他包括图片在内放入所有文件全部加载成功后才可以执行 二.编写个数,被执行的次数不同 window.onload不能通知书编写多个,就算写了多个,也只能执行一个: document.re

JavaScript tips:window.onload与$(document).ready()的差异

1.window.onload在$(document).ready()之后执行 原因:二者触发与否,都是依据document.readyState这个属性. (1)document.readyState的值:uninitialized.loading.interactive.complete(这四个值,依据时间先后排序). (2)当其值为interactive时,会触发documentContentLoaded事件,JQuery.ready()就是对documentContentLoaded事件

window.onload()和$(document).ready()区别

1 $(window).load(function() { 2 $("#btn-upload").click(function(){ //比如说: 3 uploadPhotos(); 4 }); 5 }); window.onload()和$(document).ready()区别

window.onload和document.ready区别

1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.         $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个          $(document).ready()可以同时编写多个,并且都可以得到执行 3.简化写法 window.onload没有简化写法          $(documen