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判断iframe中元素是否存在的方法
May 11 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
May 05 Javascript
javascript获取checkbox复选框获取选中的选项
Aug 12 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
用JavaScript和jQuery实现瀑布流
Mar 19 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
vue params、query传参使用详解
Sep 12 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
jquery实现左右轮播切换效果
Jan 01 jQuery
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
node静态服务器实现静态读取文件或文件夹
Dec 03 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
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
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jQuery autocomplete插件修改
2009/04/17 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
js转义字符介绍
2013/11/05 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
jQuery实现增删改查
2020/12/22 jQuery
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python中操作文件的模块的方法总结
2021/02/04 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
企业统计员岗位职责
2013/12/13 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
商务邀请函
2015/01/30 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
Java Spring读取和存储详细操作
2022/08/05 Java/Android