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 相关文章推荐
css值转换成数值请抛弃parseInt
Oct 24 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
Dec 28 Javascript
layui对工具条进行选择性的显示方法
Sep 19 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与MySQL开发的8个技巧小结
2010/12/17 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
php+mysql实现无限级分类
2015/11/11 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python实现清屏的方法
2015/04/30 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
说明书范文
2014/05/07 职场文书
社团活动总结报告
2014/06/27 职场文书
2015年检验科工作总结
2015/04/27 职场文书
Oracle中DBLink的详细介绍
2022/04/29 Oracle