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 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
js控制按钮,防止频繁点击响应的实例
Feb 15 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
详谈js的变量提升以及使用方法
Oct 06 Javascript
基于Express框架使用POST传递Form数据
Aug 10 Javascript
使用typescript构建Vue应用的实现
Aug 26 Javascript
Node.js API详解之 V8模块用法实例分析
Jun 05 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学习笔记之二 php入门知识
2011/01/12 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
在视频前插入广告
2006/11/20 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
javascript用rem来做响应式开发
2018/01/13 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Django安装配置mysql的方法步骤
2018/10/15 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python类的继承用法示例
2019/01/31 Python
python实现控制台输出彩色字体
2020/04/05 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
农林环境专业求职信
2014/03/13 职场文书
学生保证书范文
2014/04/28 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
网站出售协议书范文
2014/10/10 职场文书
教师研修随笔感言
2015/11/18 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android