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 相关文章推荐
在textarea中屏蔽js的某个function的javascript代码
Apr 20 Javascript
js 覆盖和重载 函数
Sep 25 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
JavaScript DOM事件(笔记)
Apr 08 Javascript
使用CamanJS在Web页面上处理图像的技巧
Aug 18 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
用director.js实现前端路由使用实例
Jan 27 Javascript
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
Jul 31 Javascript
layui时间控件选择时间范围的实现方法
Sep 28 Javascript
jQuery实现动态向上滚动
Dec 21 jQuery
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
禁止F5等快捷键的JS代码
2007/03/06 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
医院总经理职责
2013/12/26 职场文书
田径运动会通讯稿
2014/09/13 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
转学证明范本
2015/06/19 职场文书
摘录式读书笔记
2015/07/01 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python