jsp页面中 HTML先加载还是javascript内容先加载?

JavaScript011

jsp页面中 HTML先加载还是javascript内容先加载?,第1张

其实浏览器加载显示html的顺序是按下面的顺序进行的:

1、IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。

2、在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)。

3、如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。

4、并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。

5、样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。

6、JS、CSS中如有重定义,后定义函数将覆盖前定义函数。

如果你的网页比较大,希望部分内容先显示出来,粘住浏览者,那么你可以按照上面的规则合理的布局你的网页,达到预期的目的。

Javascript是执行顺序是至上而下的,除非特别说明, Javascript代码不会等到页面加载完毕后才执行。

例如:

一个网页里含有以下HTML代码

<div id="ele">welcome to www.jb51.net</div>

如果在这行HTML代码前,加入如下Javascript代码:

<script type="text/javascript">

  document.getElementById('ele').innerHTML= 'welcome to my blog'

</script>

运行该页面,会得到这样的错误信息:“document.getElementById(‘ele') is null。”原因是,当上面的javascript运行时,页面上还没有ID为‘ele'的DOM元素。

解决办法有两种:

1. 把javascript代码放在HTML代码之后:

 <div id="ele">welcome to www.jb51.net</div>

<script type="text/javascript">

  document.getElementById('ele').innerHTML='welcome to my blog'

</script>

2. 等到在网页加载完毕后,运行该javascript代码。可以使用传统的解决办法(load):首先加HTML的body加入“<body load="load()”>,”然后在load()函数里调用上述javascript代码。这里要着重介绍的是用jQuery来实现:

<script>

$(document).ready(function(){

   document.getElementById('ele').innerHTML= 'welcome to my blog'

})

</script>

//当然,既然用到了jQuery,更简单的写法是:

<script>

$(document).ready(function(){

   $('#ele').html('welcome to my blog') //这里也可用.text()方法

})

</script>

可以把上述jQuery代码放在页面的任何位置,它总是等到页面加载完毕后才执行。