JavaScript高级程序设计(第3版)学习笔记 概述(2)


<script type="text/javascript">
//document.writeln('</script>');会将字符串中的</script>作为前面的标签结束符来解析,从而出现异常
document.writeln('</scr'+'ipt>');//通过将</script>分开,从而避免作为<script>的结束标签解析
</script>


(3)关于type属性,虽然text/javascript和java/ecmascript都已经不被推荐使用,但一直以来使用的都还是test/javascript,实际上,服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,但在type中设置这个值可能导致脚本被忽略,另外,在非IE浏览器中还可以使用application/javascript和application/ecmascript。type如果没有指定,默认值为text/javascript。

  (4)只要不包含async和defer,浏览器会按照<script>在页面中出现的顺序依次解析;设置了defer时,会立即下载<script>元素,但是延迟执行,在规范中,要求多个含defer属性的脚本顺序执行且在DOMContentLoaded事件前执行,但是在实现中不一定满足这些要求;在HTML5中添加了async属性,和defer类似,也只是适用于外部文件,告诉浏览器立即下载文件,但延迟执行,不同的是,多个含async的脚本即便在规范中也没有规定执行的顺序,异步脚本再load事件前执行,但可能在DOMContentLoaded之前或之后执行。

  (5)在阅读之前的代码或者用一些IDE生成代码时,常常可以看到下面的结构:

复制代码 代码如下:


<script type="text/javascript">
//<![CDATA[
// 这里首先是以//开始的JavaScript注释
// 然后<![CDATA[...]]>结构是XHTML(XML)的一个特殊区域,区域内的文本不需要做任何解析,以防止XHTML将代码中的类似小于号“<”的这种特殊符号解析为元素标签
// 若不使用CDATA结构,则需要转义成相应实体,比如小于号(<)需要使用(&lt;)
// 对于不兼容XHTML的,由于最开始的//注释,也能够平稳退化
//]]>
</script>


一些常用的HTML转义: 显示   说明   实体名称   实体编号  
    半方大的空白   &ensp;   &#8194;  
    全方大的空白   &emsp;   &#8195;  
    不断行的空白   &nbsp;   &#160;  
<   小于   &lt;   &#60;  
>   大于   &gt;   &#62;  
&   &符号   &amp;   &#38;  
"   双引号   &quot;   &#34;  

  有些不支持JavaScript的浏览器,可以将JavaScript代码包含在一个HTML注释中(由于所有主流浏览器均支持JavaScript,所以不再推荐使用):

复制代码 代码如下:


<script><!--
//--></script>  


对于一些老旧浏览器或者禁用了JavaScript的浏览器,还可以使用<noscript></noscript>元素来呈现相关的说明。

文档模式

  在IE5.5中开始引入文档模式的概念,通过使用通过文档类型(doctype)切换实现的,最初包括混杂模式(quirks mode)和标准模式(standards mode),混杂模式让IE的行为与包括非标准特性的IE5相同,标准模式则让IE的行为更接近标准行为。在IE引入文档模式之后,其他浏览器也纷纷仿效。之后,IE又提出一种所谓准标准模式(almost standards mode),这种模式下的浏览器特性有很多是符合标准的,但也不尽然。所有浏览器默认开启混杂模式。

  可以通过下面的方法启动标准模式:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wddsyp.html