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计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 Javascript
Jquery Fade用法详解
Nov 06 jQuery
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
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
Ajax PHP分页演示
2007/01/02 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
阿巴庭院:Abba Patio
2019/06/18 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
医学院校毕业生自荐信范文
2014/01/01 职场文书
党员的自我评价范文
2014/01/02 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
企业战略合作意向书
2015/05/08 职场文书
春节晚会开场白
2015/05/29 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
MySQL多表查询机制
2022/03/17 MySQL
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技