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版网站风格切换实例代码
Oct 06 Javascript
10个新的最有前途的JavaScript框架
Mar 12 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
js使用栈来实现10进制转8进制与取除数及余数
Jun 11 Javascript
通过构造函数实例化对象的方法
Jun 28 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
vue 注册组件的使用详解
May 05 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
jQuery实现简单弹幕效果
Nov 28 jQuery
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 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
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
python批量下载抖音视频
2019/06/17 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
一年级数学教学反思
2014/02/01 职场文书
家长学校实施方案
2014/03/15 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python