javascript标签在页面中的位置探讨


Posted in Javascript onApril 11, 2013

在制作网页的过程中,我们经常写类似下面的代码:
[html]

<html> 
<head> 
<title>Example HTML Page</title> 
<script type="text/javascript" src="example1.js"></script> 
<script type="text/javascript" src="example2.js"></script> 
</head> 
<body> 
<!-- 这里放内容 --> 
</body> 
</html> 
<html> 
<head> 
<title>Example HTML Page</title> 
<script type="text/javascript" src="example1.js"></script> 
<script type="text/javascript" src="example2.js"></script> 
</head> 
<body> 
<!-- 这里放内容 --> 
</body> 
</html>

按照惯例,所有的<script>元素都应该放在页面的<head>元素中。请注意:无论引用几个外部js文件,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析 。换句话说,在第一个<script>元素包含的代码解析完成后,第二个<script>包含的代码才会被解析,然后才是第三个、第四个...
这种做法的目的就是把所有外部文件(包括CSS文件和JavaScript文件)的引用都放在相同的地方。可是,在文档的<head>元素中包含所有JavaScript文件,意味着必须等到全部JavaScript代码都被下载、解析和执行完成以后,才能开始呈现页面的内容(浏览器在遇到<body>标签时才开始呈现内容)。对于那些需要很多JavaScript代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟,而延迟期间的浏览器窗口将是一片空白。为了避免这个问题,现代Web应用程序一般都会把全部JavaScript引用放在<body>元素中,放在页面的内容后面,如下所示:
[html]
<html> 
<head> 
<title>Example HTML Page</title> 
</head> 
<body> 
<!-- 这里放内容 --> 
<script type="text/javascript" src="example1.js"></script> 
<script type="text/javascript" src="example2.js"></script> 
</body> 
</html> 
<html> 
<head> 
<title>Example HTML Page</title> 
</head> 
<body> 
<!-- 这里放内容 --> 
<script type="text/javascript" src="example1.js"></script> 
<script type="text/javascript" src="example2.js"></script> 
</body> 
</html>

这样,在解析包含的JavaScript代码之前,页面的内容将完全呈现在浏览器中。而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快了。

或者也可以使用<script>标签的defer属性表明脚本在执行时不会影响页面的构造,即脚本会被延迟到整个页面都解析完毕后再运行,代码如下:
[html]

<html> 
<head> 
<title>Example HTML Page</title> 
<script type="text/javascript" defer="defer" src="example1.js"></script> 
<script type="text/javascript" defer="defer" src="example2.js"></script> 
</head> 
<body> 
<!-- 这里放内容 --> 
</body> 
</html> 
<html> 
<head> 
<title>Example HTML Page</title> 
<script type="text/javascript" defer="defer" src="example1.js"></script> 
<script type="text/javascript" defer="defer" src="example2.js"></script> 
</head> 
<body> 
<!-- 这里放内容 --> 
</body> 
</html>

上述两种写法的实际效果是一样的。但是,并非所有的浏览器都支持defer属性,有些浏览器会忽略这个属性,不延迟脚本的执行。
Javascript 相关文章推荐
基于Jquery的动态添加控件并取值的实现代码
Sep 24 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
Apr 16 Javascript
中止javascript执行的方法
Feb 14 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
使用react-router4.0实现重定向和404功能的方法
Aug 28 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
Apr 28 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
详解Vue源码之数据的代理访问
Dec 11 Javascript
js实现删除json中指定的元素
Sep 22 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 #Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 #Javascript
在javascript中对于DOM的加强
Apr 11 #Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 #Javascript
在javascript中关于节点内容加强
Apr 11 #Javascript
onkeydown事件解决按回车键直接提交数据的需求
Apr 11 #Javascript
jQuery实用基础超详细介绍
Apr 11 #Javascript
You might like
PHP简单读取xml文件的方法示例
2017/04/20 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Prototype Class对象学习
2009/07/19 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
js实现微博发布小功能
2017/01/12 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python实现大文件排序的方法
2015/07/10 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
python如何对实例属性进行类型检查
2018/03/20 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
自我评价格式
2014/01/06 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
施工安全责任书
2014/04/14 职场文书
食堂标语大全
2014/06/11 职场文书
物流管理专业自荐信
2014/06/23 职场文书
英语课外活动总结
2014/08/27 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
升学宴祝酒词
2015/08/11 职场文书