你的位置:首页 > Java教程

[Java教程]Javascript高级程序设计读书笔记(第二章)


第二章  在HTML中使用Javascript

2.1<script>元素

延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到整个页面都解析完毕后再运行。相当于告诉浏览器立即下载,但延迟执行。HTML5规定要求脚本按照它们出现的先后顺序执行。

异步脚本(async)如果有多个脚本文件,执行顺序不确定,指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。

XHTML代码的规则比编写HTML严格得多,下面的代码块在HTML中是有效地,但是在XHMTL中是无效的

<script type="text/javascript">  function compare(a, b) {    if(a < b) {      alert("A is less than B");    } else if (a > b) {      alert("A is greater than B"):    } else {      alert("A is equal to B");    }  }</script>

  在XHTML中<(小于号)在XHMTL中将被当作开始一个新标签来解析,但是作为标签来讲,小于号后面不能跟空格,因此导致语法错误。可以使用&lt;代替小于号。

  保证能再XHTML中能正常执行的另外一个方式是用一个CData片段来包含Javascript代码,如下所示

<script type="text/javascript"><![CDATA{  function compare(a, b) {    if(a < b) {      alert("A is less than B");    } else if (a > b) {      alert("A is greater than B"):    } else {      alert("A is equal to B");    }  }}]></script>

  在兼容CDATA的浏览器中,该方法可以解决问题,还有不少浏览器不兼容XHTML,不支持CDATA片段,使用Javascript注释掉标记即可,如下所示

<script type="text/javascript">//<![CDATA{  function compare(a, b) {    if(a < b) {      alert("A is less than B");    } else if (a > b) {      alert("A is greater than B"):    } else {      alert("A is equal to B");    }  }//}]></script>

 

2.3文档模式

       混杂模式(quirks mode)会让IE的行为与IE5相同,

       标准模式(standards mode)让IE的行为更接近标准行为。

       这两种模式主要影响CSS内容的呈现,但在某些情况下也会影响到Javascript的解释执行。

       如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式,不推荐这种做法,不同浏览器在这种模式下的行为差异非常大。

  IE又提出了一种准标准模式(almost standards mode),这种模式下的浏览器很多都是符合标准的。准标准模式可以通过过渡型或框架集型文档类型来触发。

2.4 <noscript>元素

  包含在<noscript>元素中的内容只有在下列情况下才会显示出来:

  • 浏览器不支持脚本
  • 浏览器支持脚本,但脚本被禁用

  符合上述任何一个标准,浏览器都会显示<noscript>中的内容