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 相关文章推荐
JS获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
一个网马的tips实现分析
Nov 28 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
关于AngularJS中几种Providers的区别总结
May 17 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
Protoss建筑一览
2020/03/14 星际争霸
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
python实现从字典中删除元素的方法
2015/05/04 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
蜜蜂引路教学反思
2014/02/04 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
十佳党员事迹材料
2014/08/28 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
李白故里导游词
2015/02/12 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
mysql 获取相邻数据项
2022/05/11 MySQL