在HTML中使用JavaScript

1. <script>元素

在HTML页面中插入JavaScript的主要方法就是使用script元素。

HTML4.01为<script>定义了下列6个属性:

async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。

charset:可选。表示通过src属性指定的代码的字符集。但是由于大多数浏览器会忽略它的值,因此这个属性很少有人用。

defer:可选。表示脚本可以延迟到文档完全被解析和现实之后再执行。只对外部脚本文件有效。IE7及更早版本对潜入脚本也支持这个属性。

language:已废弃。

scr:可选。表示包含要执行代码的外部文件。

type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。虽然text/javascript已经不被推荐使用,但是人们一直还是使用的是text/javascript。实际上服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,但是在type种设置这个值却可能导致脚本被忽略。考虑到约定俗成和最大限度的浏览器兼容性,目前type属性的值依旧还是text/javascript。但是这个属性并不是必须的,如果没有指定这个属性,则其默认值仍为text/javascript。

使用<script>元素的方式有两种:直接在页面中嵌入JavaScript代码和包含外部JavaScript文件。

在使用<script>元素嵌入JavaScript代码时,只须为<script>指定type属性。然后下面这样把JavaScript代码直接放在元素内部即可:

 

1 <script type="text/javascript">
2 function sayHi(){
3 alert ("Hi!");
4 }
5 </script>

包含在<script>元素内部的JavaScript代码将被从上至下依次解释。在解释器对<script>元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。

注意:按照解析嵌入式代码的规则,当浏览器遇到字符串“</script>”时,就会认为那是结束的</script>标签,从而产生错误。而通过转义字符“/”可以解决此问题。

但是不能再HTML文档中使用这种语法。因为这种语法不符合HTML规范,而且也得不到某些浏览器(尤其是IE)的正确解析。

还有带有scr属性的<script>元素不应该在其<script>和</script>标签之间再包含额外的JavaScript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。

2. 标签的位置

如下代码所示:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <title>Exanple HTML Page</title>
 5 </head>
 6 <body>
 7 <!--这里放内容-->
 8 <script type="text/javascript" scr="example1.js"></script>
 9 <script type="text/javascript" scr="example2.js"></script>
10 </body>
11 </html>

3. 延迟脚本

若为<script>标签定义了defer属性,这表明脚本在执行时不会影响页面的结构。脚本会被延迟到整个页面都解析完毕后再运行。

 

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <title>Exanple HTML Page</title>
 5 <script type="text/javascript" defer="defer" scr="example1.js"></script>
 6<script type="text/javascript" defer="defer" scr="example2.js"></script>
 7 </head>
 8 <body>
 9 <!--这里放内容-->
10 </body>
11 </html>

在现实中延迟脚本并不一定会按顺序执行,因此最好只包含一个延迟脚本。

4. 异步脚本

HTML5为<script>元素定义了async属性。async属性与defer属性类似,用于改变处理脚本的行为,同样只适用于外部脚本文件并告诉浏览器立即下载文件。但是async并不保证按照指定他们的先后顺序执行。第二个脚本文件可能会在第一个脚本文件之前执行。

建议异步脚本不要在加载期间修改DOM。

5. 文档模式

如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。但是采用混杂模式不是什么值得推荐的做法,因为不同浏览器在这种模式下的行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言。

标准模式,可以通过使用下面任意一种文档类型来开启:

<!--HTML 4.01 严格型 -->

<!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

 

<!--XHTML 1.0 严格型 -->

<!DOCTYPE html PUBLIC

"-//W3D//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 

<!-- HTML -->

<!DOCTYPE html>

对于准标准模式,则可以通过过渡性和框架集型文档类型来触发。

6. <noscript>元素

只有当浏览器不支持脚本或者浏览器支持脚本,但是脚本被禁用的情况下才会显示出<noscript>中的内容。 

 

 

posted @ 2013-06-24 01:21  伊姒  阅读(261)  评论(0)    收藏  举报