JavaScript代码应该放在HTML代码哪个位置比较好?


Posted in Javascript onOctober 16, 2014

在哪里放置 JavaScript 代码?

通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所述。

放置于<head></head>之间

将 JavaScript 代码放置于 HTML 文档的 <head></head> 标签之间是一个通常的做法。由于 HTML 文档是由浏览器从上到下依次载入的,将 JavaScript 代码放置于<head></head> 标签之间,可以确保在需要使用脚本之前,它已经被载入了:

<html>

<head>

<script type="text/javascript">

……

JavaScript 代码

……

</script>

</head>

....

放置于<body></body>之间

也有部分情况将 JavaScript 代码放置于 <body></body> 之间的。设想如下一种情况:我们有一段 JavaScript 代码需要操作 HTML 元素。但由于 HTML 文档是由浏览器从上到下依次载入的,为避免 JavaScript 代码操作 HTML 元素时,HTML 元素还未载入而报错(对象不存在),因此需要将这段代码写到 HTML 元素后面,例子如下:

<html>

<head>

</head>

<body>

</body>

<div id="div1"></div>

<script type="text/javascript">

document.getElementById("div1").innerHTML="测试文字";

</script>

</html>

但通常情况下,我们操作页面元素一般都是通过事件来驱动的,所以上面这种情况并不多见。另外我们不建议将 JavaScript 代码写到 <html></html> 之外。

提示

如果 HTML 文档声明为 XHTML ,<script></script> 标签必须在 CDATA 部分内声明,否则 XHTML 将把 <script></script> 标签解析为另一个 XML 标签,里面的 JavaScript 代码可能不会正常执行。因此,在严格的 XHTML 中使用 JavaScript 应该像如下示例一样声明:

<html>

<head>

<script type="text/javascript">

<![CDATA[

JavaScript 代码

]]>

</script>

</head>

....

以上两种将 JavaScript 代码写到 HTML 文档中的方式,都是 HTML 文档内部引用 JavaScript 代码的方式。除了内部引用,还可以使用外部引用方式。

外部引用 JavaScript 代码

将 JavaScript 代码(不包括<script></script>标签)单独形成一个文档,并以 js 后缀命名,如 myscript.js ,并在 HTML 文档 <script></script> 标签中使用 src 属性来引用该文件:

<html>

<head>

<script type="text/javascript" src="myscript.js"></script>

</head>

....

在使用了外部引用 JavaScript 代码之后,其好处显而易见:
1.避免在 JavaScript 代码里使用 <!-- ... //-->
2.避免使用难看的 CDATA
3.公共的 JavaScript 代码可以被复用于其他 HTML 文档,也利于 JavaScript 代码的统一维护
4.HTML 文档更小,利于搜索引擎收录
5.可以压缩、加密单个 JavaScript 文件
6.浏览器可以缓存 JavaScript 文件,减少宽带使用(当多个页面同时使用一个 JavaScript 文件的时候,通常只需下载一次)
7.避免使用复杂的 HTML 实体,如可以直接使用 document.write(2>1) 而无需写作 document.write(2<1)

将 JavaScript 代码形成为外部文件,也会增加服务器的 HTTP 请求负担,在超高并发请求的环境下,这并不是一个好的策略。另外 在引用外部 js 文件时,需注意文件的正确路径。

Javascript 相关文章推荐
jQuery 各种浏览器下获得日期区别
Dec 22 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
jQuery textarea的长度进行验证
May 06 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
基于jquery的拖动布局插件
Nov 25 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
js清空form表单中的内容示例
May 20 Javascript
canvas实现图像布局填充功能
Feb 06 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
JavaScript模拟实现封装的三种方式及写法区别
Oct 27 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
JavaScript实现刮刮乐效果
Nov 01 Javascript
JavaScript基础教程之alert弹出提示框实例
Oct 16 #Javascript
编程语言JavaScript简介
Oct 16 #Javascript
js父页面与子页面不同时显示的方法
Oct 16 #Javascript
Javascript Memoizer浅析
Oct 16 #Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 #Javascript
JavaScript实现继承的4种方法总结
Oct 16 #Javascript
JavaScript实现网页截图功能
Oct 16 #Javascript
You might like
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
Javascript Select操作大集合
2009/05/26 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
js运动事件函数详解
2016/10/21 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python对文件操作知识汇总
2016/05/15 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python模块的加载讲解
2019/01/15 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
python单例模式的多种实现方法
2019/07/26 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python telnet登陆功能实现代码
2020/04/16 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python 随机按键模拟2小时
2020/12/30 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
GWT都有什么特性
2016/12/02 面试题
关于礼仪的演讲稿
2014/01/04 职场文书
土地转让协议书范本
2014/04/15 职场文书
党员公开承诺书2015
2015/01/21 职场文书
员工试用期工作总结
2019/06/20 职场文书