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 相关文章推荐
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
jQuery.extend()的实现方式详解及实例
Jun 29 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
js实现禁止中文输入的方法
Jan 14 Javascript
javascript函数特点实例分析
May 14 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
JavaScript内置对象math,global功能与用法实例分析
Jun 10 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实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
python实现socket端口重定向示例
2014/02/10 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
《乞巧》教学反思
2014/02/27 职场文书
纪律教育月活动总结
2014/08/26 职场文书
单位员工收入证明样本
2014/10/09 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
自荐信大全
2019/03/21 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
java泛型通配符详解
2021/07/25 Java/Android