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 相关文章推荐
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
Dec 26 Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
javascript深拷贝(deepClone)详解
Aug 24 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
Vue集成Iframe页面的方法示例
Dec 12 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
JavaScript实现Excel表格效果
Feb 07 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
使用Python获取Linux系统的各种信息
2014/07/10 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
python实现自动登录后台管理系统
2018/10/18 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
中学生自我评价范文
2014/02/08 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
售房协议书范本2014
2014/10/23 职场文书
裁员通知
2015/04/25 职场文书
通知格式
2015/04/27 职场文书
居安思危观后感
2015/06/11 职场文书
业务员管理制度范本
2015/08/06 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
golang slice元素去重操作
2021/04/30 Golang