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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
Javascript 颜色渐变效果的实现代码
Oct 01 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
JS实现仿苹果底部任务栏菜单效果代码
Aug 28 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
Feb 17 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
JavaScript模板引擎原理与用法详解
Dec 24 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php设计模式小结
2013/02/15 PHP
php实现httpclient类示例
2014/04/08 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
浅述python中argsort()函数的实例用法
2017/03/30 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python处理PDF与CDF实例
2020/02/26 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
高校教师思想汇报
2014/01/11 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
顶撞老师检讨书
2014/02/07 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
护士医德医风自我评价
2014/09/15 职场文书
晚会开幕词
2015/01/28 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript