关于javascript的几个小实验

1,外部的js文件会不会阻塞html的解析和渲染 ? 

猜想:不会的, 现代的浏览器应该已经做了优化。

实验方法:在页面中放一段执行时间超过2秒的js代码。然后在阻塞代码的后面判断能不能去的后续的dom元素。

 

靠!没想到是这样的结果!   Script文件果真阻塞了dom的解析。 浏览器真的是一个文件一个文件的解析的。

 

实验代码 

外部js脚本  

var begin = new Date();

var end = new Date();

while((end.valueOf() - begin.valueOf())<(1000*15)){

end = new Date();

}

var testDom = document.getElementById("test");

console.log(testDom.innerHTML);

 

   Html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Test</title>

<script src="testHelloWorld.js"></script>

</head>

 

<body>

<div id="test">

这是一个测试dom

</div>

</body>

</html>

 

 

 

2,是不是dom元素加载,解析完后就会触发onload函数呢? 

   猜想:不会! 有一次,我在dom文档的最后加了一段时间标记。然后又在onload事件的开始加了一个时间标记。 然后算的之间的时间间隔达一秒钟。我不知道浏览器在这个时间段中干嘛了。

   猜想:浏览器一定是先把dom文档解析完后,然后等待已经请求的资源,然后按续解析他们。

  

   试验方法:在html的最后记下时间戳,然后在onload的最后记下时间戳。   

 

   这次当页面加载完后  马上就执行onload中的时间了。 而我们公司的项目却要1秒后才执行。 不知道为什么   

 

相关代码  

Js代码   

 

Html代码  

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Test</title>

</head>

<body>

</body>

<script>

   window.begin = new Date();

   window.onload = function(){

       var end = new Date();

       console.log(end.valueOf() - begin.valueOf());

   }

</script>

</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值