JavaScript在XHTML中的用法详解


Posted in Javascript onApril 11, 2013

编写XHTML代码的规则要比编写HTML要严格得多,类似下面的代码在HTML中是有效的,但在XHTML中则是无效的。
[javascript]

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

在HTML中,有特殊的规则用以确定<script>元素中的哪些内容可以被解析,但这些规则在XHTML中不适用。因为小于号(<)在XHTML中将被当作开始一个新标签来解析。但是作为标签,小于号后面不能跟空格,因此导致语法错误。
解决方法有两个:一、用相应的HTML实体(<)替换代码中所有的小于号(<);二、使用一个CData片段来包含JavaScript代码。
方法一相应代码:
[javascript]
<script type="text/javascript"> 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
</script> 
<script type="text/javascript"> 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
</script>

方法二相应代码:
[javascript]
<script type="text/javascript"><![CDATA[ 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
]]></script> 
<script type="text/javascript"><![CDATA[ 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
]]></script>

方法一虽然可以让代码在XHTML中正常运行,但却导致代码不好理解了;而方法二在兼容XHTML的浏览器中可以解决问题。但不少浏览器并不兼容XHTML,因而不支持CData片段。所以再使用JavaScript注释将CData标记注释掉。
相应代码:
[html]
<script type="text/javascript"> 
//<![CDATA[ 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
//]]> 
</script> 
<script type="text/javascript"> 
//<![CDATA[ 
function compare(a, b) 
{ 
if(a < b) 
{ 
alert("a is less then b"); 
} 
else if(a > b) 
{ 
alert("a is greater then b"); 
} 
else 
{ 
alert("a is equal to b"); 
} 
} 
//]]> 
</script>

这种格式在所有现代浏览器中都可以正常使用。
附:不推荐使用的语法
[javascript]
<script><!-- 
function sayHi(){ 
alert("Hi!); 
} 
//--></script> 
<script><!-- 
function sayHi(){ 
alert("Hi!); 
} 
//--></script>

像上面这样把JavaScript代码包含在一个HTML注释中可以让不支持<script>元素的浏览器隐藏嵌入的JavaScript代码,即忽略<script>标签中的内容,而那些支持JavaScript的浏览器在遇到这种情况时,则必须进一步确认其中是否包含需要解析的JavaScript代码。

虽然这种注释格式得到了所有浏览器的认可,也能被正确的解释,但由于所有浏览器都已经支持JavaScript,因此也就没有必要再使用这种格式了。

Javascript 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
javascript实现unicode和字符的互相转换
Jul 18 Javascript
解析jquery获取父窗口的元素
Jun 26 Javascript
ie9 提示'console' 未定义问题的解决方法
Mar 20 Javascript
bootstrap改变按钮加载状态
Dec 01 Javascript
javascript实现拖动元素交换位置
Nov 29 Javascript
浏览器兼容的JS写法总结
Apr 27 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
详解ESLint在Vue中的使用小结
Oct 15 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
JavaScript中的noscript元素属性位置及作用介绍
Apr 11 #Javascript
javascript标签在页面中的位置探讨
Apr 11 #Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 #Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 #Javascript
在javascript中对于DOM的加强
Apr 11 #Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 #Javascript
在javascript中关于节点内容加强
Apr 11 #Javascript
You might like
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
个人自荐书
2013/12/20 职场文书
优秀党员获奖感言
2014/02/18 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
小学六年级学生评语
2014/04/22 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
党员个人整改措施
2014/10/24 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
初三英语教学反思
2016/02/15 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python