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创建插件的代码分析
Apr 14 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
JavaScript中用于生成随机数的Math.random()方法
Jun 15 Javascript
js实现简单的联动菜单效果
Aug 19 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
jQuery事件委托之Safari
Jul 05 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 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 编程安全性小结
2010/01/08 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php使用session二维数组实例
2014/11/06 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
基于Python实现用户管理系统
2019/02/26 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python实现加密的方式总结
2020/01/19 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
房地产还款计划书
2014/01/10 职场文书
大专会计自我鉴定
2014/02/06 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
工程质量承诺书范文
2014/03/27 职场文书
志愿者活动总结范文
2014/04/26 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
离婚协议书样本
2015/01/26 职场文书
办公室规章制度范本
2015/08/04 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
Python如何加载模型并查看网络
2022/07/15 Python