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 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
Jun 07 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
JavaScript数组去重的两种方法推荐
Apr 05 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
layui文件上传实现代码
May 20 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
vue实现菜单切换功能
May 08 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下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP之预定义接口详解
2015/07/29 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
VsCode与Node.js知识点详解
2019/09/05 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
同学聚会欢迎辞
2014/01/14 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
工作失职检讨书范文
2015/05/05 职场文书
廉洁自律证明
2015/06/24 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS