让JavaScript兼容XHTML

  近来,随着XHTML(可扩展HTML)标准的出现,<script/>标签也经历了一些改变。该标签不再用language特性,而用type特性声明内嵌代码或要加入的外部文件的mime类型,JavaScript的mime类型是"text/javascript"。例如:
[codes=xml]
<html>
<head>
<title>Title of Page</title>
<script type=”text/javascript”>
var i = 0;
</script>
<script type=”text/javascript”
src=”../scripts/external.js”></script>
</head>
<body>
<!– body goes here –>  
</body>
</html>
[/codes]
  即使许多浏览器不完全支持XHTML,但大多数开发者现在都用type特性,而不用language特性,以提供更好的XHTML支持。省略language特性不会带来任何问题,因为如前所述,所有浏览器都默认,<script/>的该属性值为JavaScript。
  XHTML的第二个改变是使用CDATA段。XML中的CDATA段用于声明不应被解析为标签的文本(XHTML也是如此),这样就可以使用特殊字符,如小于(<)、大于(>)、和号(&)和双引号("),而不必使用它们的字符实体。考虑下面的代码:
[codes=xml]
<script type="text/javascript">
var FU = {movie:"images/others/mediaplayer.swf",width:"150",height:"180",majorversion:"8",build:"0",bgcolor:"#FFFFFF",allowfullscreen:"true",flashvars:"file=plugin/fmplayer/playlist.php&transition=random&backcolor=0x000000&frontcolor=0xFFFFFF&lightcolor=0xFFAF00&showicons=true&overstretch=false&showeq=true&thumbsinplaylist=true&autoscroll=true&linktarget=_blank&autostart=true&volume=100&repeat=true&bufferlength=300&displayheight=80"};
UFO.create(FU, "media_player");
</script>
[/codes]
  这段代码是blog的Flash Media Player中的代码,其中包含了不少&作为Flash的参数传递到Flash Media Player中。但是,在XHTML中,这段代码是无效的,因为它使用了特殊符号&要修正这个问题,必须分别用这三个字符的XML实体&替换它们:
[codes=xml]
<script type="text/javascript">
<![CDATA[
var FU = {movie:"images/others/mediaplayer.swf",width:"150",height:"180",majorversion:"8",build:"0",bgcolor:"#FFFFFF",allowfullscreen:"true",flashvars:"file=plugin/fmplayer/playlist.php&transition=random&backcolor=0x000000&frontcolor=0xFFFFFF&lightcolor=0xFFAF00&showicons=true&overstretch=false&showeq=true&thumbsinplaylist=true&autoscroll=true&linktarget=_blank&autostart=true&volume=100&repeat=true&bufferlength=300&displayheight=80"};
UFO.create(FU, "media_player");
]]>
</script>
[/codes]
  虽然这是正式方式,但还要记住,大多数浏览器都不完全支持XHTML,这就带来主要问题,即这在JavaScript中是个语法错误,因为大多数浏览器还不认识CDATA段。
  当前使用的解决方案模仿了“对旧浏览器隐藏”代码的方法。使用单行的JavaScript注释,可在不影响代码语法的情况下嵌入CDATA段:
[codes=xml]
<script type="text/javascript">
//<![CDATA[
var FU = {movie:"images/others/mediaplayer.swf",width:"150",height:"180",majorversion:"8",build:"0",bgcolor:"#FFFFFF",allowfullscreen:"true",flashvars:"file=plugin/fmplayer/playlist.php&transition=random&backcolor=0x000000&frontcolor=0xFFFFFF&lightcolor=0xFFAF00&showicons=true&overstretch=false&showeq=true&thumbsinplaylist=true&autoscroll=true&linktarget=_blank&autostart=true&volume=100&repeat=true&bufferlength=300&displayheight=80"};
UFO.create(FU, "media_player");
//]]>
</script>
[/codes]

此条目发表在分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据