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引用对象的方法代码
Aug 13 Javascript
IE本地存储userdata的一个bug说明
Jul 01 Javascript
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 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实现快速排序法函数代码
2012/08/27 PHP
浅析PHP绘图技术
2013/07/03 PHP
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
JavaScript知识点整理
2015/12/09 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
在vue 中使用 less的教程详解
2018/09/26 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
Python使用chardet判断字符编码
2015/05/09 Python
Python 爬虫图片简单实现
2017/06/01 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python如何输出警告信息
2020/07/30 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
集体婚礼证婚词
2014/01/13 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
电话客服工作职责
2014/07/27 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Python序列化与反序列化相关知识总结
2021/06/08 Python
spring boot中nativeQuery的用法
2021/07/26 Java/Android