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 相关文章推荐
JavaScript 入门基础知识 想学习js的朋友可以参考下
Dec 26 Javascript
javascript向flash swf文件传递参数值注意细节
Dec 11 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 Javascript
分享一个原生的JavaScript拖动方法
Sep 25 Javascript
vue2滚动条加载更多数据实现代码
Jan 10 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
js学习心得_一个简单的动画库封装tween.js
Jul 14 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP学习之PHP变量
2006/10/09 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
Numpy之random函数使用学习
2019/01/29 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
python设置随机种子实例讲解
2019/09/12 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
python如何快速拼接字符串
2020/10/28 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
消防安全汇报材料
2014/02/08 职场文书
社会学专业求职信
2014/02/24 职场文书
村庄绿化方案
2014/05/07 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers