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 相关文章推荐
多广告投放代码 推荐
Nov 13 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
实例讲解JS中数组Array的操作方法
May 09 Javascript
js漂浮广告实现代码
Aug 15 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
AngularJS 遇到的小坑与技巧小结
Jun 07 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
Vue 动态添加路由及生成菜单的方法示例
Jun 20 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
php 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
详解js的六大数据类型
2016/12/27 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
详解python中asyncio模块
2018/03/03 Python
Python转换时间的图文方法
2019/07/01 Python
python支付宝支付示例详解
2019/08/22 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
导师就业推荐信范文
2014/05/22 职场文书
新农村建设典型材料
2014/05/31 职场文书
学校端午节活动方案
2014/08/23 职场文书
财务个人年度总结范文
2015/02/26 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python