大家好,欢迎来到IT知识分享网。
JavaScript最初的产生是应用在网页中的,那么就不可避免地要涉及到HTML。HTML是web的核心语言,因此如何解决JavaScript和HTML的页面共存同时又不影响页面的显示效果是一个很重要的问题,经过长期的探索和尝试,最后决定为Web增加统一的脚本支持。
向HTML页面中插入JavaScript的主要方法,就是使用<script>元素,这个元素后来被加入到正式的HTML规范中。
HTML为<script>定义了下列6个属性:
- async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
- charset:可选。表示通过src属性指定的代码的字符集。
- defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
- language:已废弃。
- src:可选。表示包含要执行代码的外部文件。
- type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(称为MIME类型)。目前type属性的值依旧还是text/javascript。
使用<script>元素的方式有两种:
- 直接在页面中嵌入JavaScript代码
- 包含外部JavaScript文件。
在使用<script>元素嵌入JavaScript代码时,只须为<script>指定type属性。然后如下把JavaScript代码直接放在元素内部即可:
<script type="text/javascript">
function sayHi(){
alert("Hi!");
}
</script>
包含在<script>元素内部的JavaScript代码将被从上至下依次解释。
在上面的例子中,解释器会解释一个函数的定义,然后将该定义保存在自己的环境当中。在解释器对<script>元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或显示。
在使用<script>嵌入JavaScript代码时,记住不要在代码中的任何地方出现”</script>”字符串。否则浏览器在加载代码时会产生一个错误:
<script type="text/javascript">
function sayScript(){
alert("</script>");
}
</script>
因为按照解析嵌入式代码的规则,当浏览器遇到字符串”</script>”时,就会认为那是结束的
</script>标签,但是可以通过转义字符“/”可以解决这个问题:
<script type="text/javascript">
function sayScript(){
alert("\</script>");
}
</script>
如果要通过<script>元素来包含外部JavaScript文件,那么src属性就是必需的。这个属性的值是一个指向外部JavaScript文件的链接,例如
<script type="text/javascript" src="example.js"></script>
外部文件 example.js 将被加载到当前页面中。外部文件只须包含通常要放在开始的<script>和结束的</script>之间的那些JavaScript代码即可。与解析嵌入式JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。如果是在XHTML文档中,也可以省略前面示例代码中结束的</script>标签,例如
<script type="text/javascript" src="example.js" />
但是,不能在 HTML 文档使用这种语法。因为这种语法不符合HTML规范,而且也得不到某些浏览器(尤其是 IE)的正确解析。
外部JavaScript文件带有.js扩展名,但不是必需的,因为浏览器不会检查包含 JavaScript的文件的扩展名。
需要注意的是,带有 src 属性的<script>元素不应该在其<script>和</script>标签之间再 包含额外的 JavaScript 代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码 会被忽略。
另外,通过<script>元素的 src 属性还可以包含来自外部域的 JavaScript 文件。这一点既让 <script>元素倍显强大,又让它备受争议。在这一点上,<script>与<img>元素非常相似,即它的 src 属性可以是指向当前 HTML 页面所在域之外的某个域中的完整 URL,例如:
<script type=”text/javascript” src=”http://www.somewhere.com/afile.js”></script>
位于外部域中的代码也会被加载和解析,就像这些代码位于加载它们的页面中一样。利用这一点就可以在必要时通过不同的域来提供 JavaScript 文件。不过,在访问自己不能控制的服务器上的 JavaScript 文件时则要多加小心。
无论如何包含代码,只要不存在defer和 async属性,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析。换句话说,在第一个<script>元素包含的代码解析完成后,第二个<script>包含的代码才会被解析,然后才是第三个、第四个……
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/51012.html