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 相关文章推荐
jQuery 改变CSS样式基础代码
Feb 11 Javascript
简单的前端js+ajax 购物车框架(入门篇)
Oct 29 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
Bootstrap创建可折叠的组件
Feb 23 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
Jan 20 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
angular-ngSanitize模块-$sanitize服务详解
Jun 13 Javascript
vue 中的keep-alive实例代码
Jul 20 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python序列操作之进阶篇
2016/12/08 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python3实现弹弹球小游戏
2019/11/25 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
开工典礼策划方案
2014/05/23 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
家访教师心得体会
2016/01/23 职场文书