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 相关文章推荐
图片之间的切换
Jun 26 Javascript
javascript preload&amp;lazy load
May 13 Javascript
一些老手都不一定知道的JavaScript技巧
May 06 Javascript
JQuery球队选择实例
May 18 Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 Javascript
react高阶组件添加和删除props
Apr 26 Javascript
layui表格数据复选框回显设置方法
Sep 13 Javascript
vue实现select下拉显示隐藏功能
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
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
Python 异常处理的实例详解
2017/09/11 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
浅析Python迭代器的高级用法
2020/07/16 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
中海讯通笔试题
2015/09/15 面试题
体育教育专业自荐信范文
2013/12/20 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
运动会入场词200字
2014/02/15 职场文书
病人慰问信范文
2015/02/15 职场文书
辞职信格式模板
2015/02/27 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
python之json文件转xml文件案例讲解
2021/08/07 Python
html5调用摄像头截图功能
2022/01/18 Javascript