问题引入
页面中js函数的参数值包含空格、单引号、双引号等特殊字符,如何能正确调用函数?
如点击一个链接,弹出对话框显示 【开始 “双引号中的内容” '单引号中的内容' 结束】
拼凑了半天字符串,总是无法正确显示,要么浏览器解析HTML报错,要么点击链接无法正确调用js函数。
后来仔细一想,这其实涉及到2个方面的转义
1.HTML的转义。onclick属性的值由双引号包含起来,里面内容的双引号必须转义,否则HTML识别就会出错。在HTML中双引号转义就是使用实体名"
2.js的转义。js的参数由单引号包含起来,参数值中的单引号必须转义,而js的转义是通过"/"+"需要转义的字符",所以单引号就是/'
想明白了这个道理,就很容易实现了。
<
html
>
<
head
>
<
script
type
="text/javascript"
>
function showEx(msg){
alert(msg);
}
</
script
>
</
head
>
<
body
>
<
a
href
="#"
onclick
="javascript:showEx('开始 "双引号中的内容" '单引号中的内容' 结束');"
>
click me
</
a
>
</
body
>
</
html
>
顺手把XHTML中的转义字符贴一下
页面中js函数的参数值包含空格、单引号、双引号等特殊字符,如何能正确调用函数?
如点击一个链接,弹出对话框显示 【开始 “双引号中的内容” '单引号中的内容' 结束】
拼凑了半天字符串,总是无法正确显示,要么浏览器解析HTML报错,要么点击链接无法正确调用js函数。
后来仔细一想,这其实涉及到2个方面的转义
1.HTML的转义。onclick属性的值由双引号包含起来,里面内容的双引号必须转义,否则HTML识别就会出错。在HTML中双引号转义就是使用实体名"
2.js的转义。js的参数由单引号包含起来,参数值中的单引号必须转义,而js的转义是通过"/"+"需要转义的字符",所以单引号就是/'
想明白了这个道理,就很容易实现了。












顺手把XHTML中的转义字符贴一下
ASCII Entities with new Entity Names
Result | Description | Entity Name | Entity Number |
---|---|---|---|
"
|
quotation mark
|
"
|
"
|
'
|
apostrophe
|
' (does not work in IE)
|
'
|
&
|
ampersand
|
&
|
&
|
<
|
less-than
|
<
|
<
|
>
|
greater-than
|
>
|
>
|