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+CSS 半开折叠效果原理及代码(自写)
Mar 04 Javascript
js 自制滚动条的小例子
Mar 16 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
微信小程序访问豆瓣电影api的实现方法
Mar 31 Javascript
Vue开发之封装上传文件组件与用法示例
Apr 25 Javascript
vue实现节点增删改功能
Sep 26 Javascript
通过实例了解Javascript柯里化流程
Mar 03 Javascript
JavaScript 链表定义与使用方法示例
Apr 28 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编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
Dojo 学习要点
2010/09/03 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
python插入数据到列表的方法
2015/04/30 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Python Requests 基础入门
2016/04/07 Python
python实现简易数码时钟
2021/02/19 Python
python的slice notation的特殊用法详解
2019/12/27 Python
Django 再谈一谈json序列化
2020/03/16 Python
利用python在excel中画图的实现方法
2020/03/17 Python
美国购车网站:TrueCar
2016/10/19 全球购物
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
电气个人求职信范文
2014/02/04 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
期中考试反思800字
2014/05/01 职场文书
工业设计专业自荐书
2014/06/05 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python