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 ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
Aug 26 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
js弹出对话框方式小结
Nov 17 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
原生js实现吸顶效果
Mar 13 Javascript
Element input树型下拉框的实现代码
Dec 21 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
Nov 11 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中的登陆login
2007/01/18 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
ASP Json Parser修正版
2009/12/06 Javascript
js控制input输入字符解析
2013/12/27 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
js转换对象为xml
2017/02/17 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
大一学生的职业生涯规划书范文
2014/01/19 职场文书
个人自我剖析材料
2014/02/07 职场文书
管理标语大全
2014/06/24 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
JavaScript实现队列结构过程
2021/12/06 Javascript