HTML4.01位<script>定义一下6个属性
async:可选。表示应该立即下载脚本,但不妨碍页面中的其他操作,只对外部文本文件有效。charset:可选。表示通过src属性指定的代码的字符集。defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效,IE7及更早的版本对嵌入脚本也支持这个属性。language:已废弃。src:可选。引入外部脚本文件。type:可选。表示编写代码使用的脚本语言的类型(也成MIME类型)。实际上服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,但在type中设置这个值可能导致脚本被忽略。-----------------------------------------------------------------------------------------------------------------------
包含在<script>元素内部的JavaScript代码将被从上到下的依次解析,在解析器对内部所有代码解析完毕以前,页面中的其余内容不会被浏览器加载或显示。
------------------------------------------------------------------------------------------------------------------------
在使用<script>嵌入js代码时,不要在代码的任何一个地方出现“</script>”字符串。如:<script type="text/javascript">function sayScript(){
alert('</script>');
}</script>
因为当遇到“</script>”时,浏览器会认为是结束的</script>标签。但是可以通过转义字符“\”来解决。
<script type="text/javascript">function sayScript(){
alert('<\/script>');
}</script>
-----------------------------------------------------------------------------------------------------------------------
在解析外部js文件时,页面也会暂时停止,只有等外部页面下载、解析完成,才会执行后续工作。
注意:带有src属性的script元素不应该在其<script></script>标签之间再包含额外的代码,如果包含了嵌入代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
-----------------------------------------------------------------------------------------------------------------------
通过<script>元素的src属性还可以包含来自外部域的JavaScript文件。注意:利用这一点就可以在必要时通过不同的域来提供JavaScript文件,不过在访问自己不能控制的服务器上的JavaScript文件时则要小心。如果遇到怀有恶意的程序员,那他们随时都可能替换该文件中的代码。因此,如果想包含来自不同域的代码,要么你是这个域的所有者,要么这个域的所有这个值得信赖。
----------------------------------------------------------------------------------------------------------------------
标签的位置: 为防止在解析js文件代码时出现的阻塞情况,我们一般是把全部js放在body的后面。这也是前端性能优化的一种做法。
----------------------------------------------------------------------------------------------------------------------
延迟脚本:
HTML4.01为<script>标签定义了defer属性,脚本就会被延迟整个页面都解析完成之后再执行。在HTML5规范要求脚本按照他们出现的顺序执行,因此第一个延迟的脚本会先于第二个延迟脚本执行,而这两个脚本会先于DOMContentLoaded事件执行。在现实中,延迟脚本并不一定会按照顺序执行,也不一定会在 DOMContentLoaded事件触发钱执行,因此最好只包含一个延迟脚本。
defer属性只适用于外部脚本文件。但,在IE4~IE7还支持对嵌入的脚本defer属性。
---------------------------------------------------------------------------------------------------------------------
异步脚本:
async异步属性。在使用异步属性时确保各个文件之间互不依赖是非常重要的。因为标记async的脚本并不保证按照指定的他们的先后顺序执行。建议:异步脚本不要在加载期间修改DOM。异步脚本一定会在页面的load事件前执行。
---------------------------------------------------------------------------------------------------------------------
嵌入代码和外部文件:
支持外部文件的人多于嵌入代码。优点有:
可维护性;可缓存;适应未来。----------------------------------------------------------------------------------------------------------------------
文档模式
<!-- 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 "-//W3C//DTD xHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-strict.dtd">
<!-- HTML 5 --><!DOCTYPE html>
---------------------------------------------------------------------------------------------------------------------
<noscript>元素:
在以下情况会显示出来
浏览器不支持脚本;浏览器支持脚本,但脚本被禁用。符合上面任何一条,就会显示<noscript>标签里面的内容,否则<noscript>里面的内容永远不会显示出来。