rou 2012-09-10
在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<inputvalue="Test"type="button"onclick="alert(""OK"");"/>
IE提示出错后,再漫不经心地改为:
<inputvalue="Test"type="button"onclick="alert(\"OK\");"/>
结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<inputvalue=""type="button"onclick="alert('OK');"/>
但为什么javascript中的转义字符\没有效果了呢?后来找到一段正常的代码:
<inputvalue="Test"type="button"onclick="alert("OK");"/>
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。两个双引号的做法是 vbScript的,\"这种做法则是javascript的,而HTML的,则是用",此外还可以使用:"、'。下面列出各种表达方法:
<html>
<body>
<inputvalue="外双引号内双引号-错误"type="button"onclick="alert("OK");"/><br/>
<inputvalue="外单引号内单引号-错误"type="button"onclick='alert('OK');'/><br/>
<inputvalue="两个双引号-错误"type="button"onclick="alert(""OK"");"/><br/>
<inputvalue="两个单引号-错误"type="button"onclick="alert(''OK'');"/><br/>
<inputvalue="\+双引号-错误"type="button"onclick="alert(\"OK\");"/><br/>
<inputvalue="\+单引号-错误"type="button"onclick="alert(\'OK\');"/><br/>
<inputvalue="外双引号内单引号-OK"type="button"onclick="alert('OK');"/><br/>
<inputvalue="外单引号内双引号-OK"type="button"onclick='alert("OK");'/><br/>
<inputvalue="外部不使用引号-OK"type="button"onclick=alert('OK');alert("OK");/><br/>
<inputvalue="HTML转义字符"(")-OK"type="button"onclick="alert("OK");"/><br/>
<inputvalue="HTML转义字符'(')-OK"type="button"onclick="alert('OK');"/><br/>
<inputvalue="HTML转义字符"(")-OK"type="button"onclick="alert('OK');"/><br/>
<inputvalue="HTML转义字符'(')-OK"type="button"onclick="alert('OK');"/><br/>
<inputvalue="HTML转义字符"(")-OK"type="button"onclick="alert("OK");"/><br/>
<input value="HTML转义字符'(& a p o s ;)-IE错误" type="button" onclick="alert('OK');" /><br /><input value="其它\\-错误" type="button" onclick="alert(\\"OK\\");" /><br />
<inputvalue="其它\"-错误"type="button"onclick="alert(\"OK\");"/><br/>
</body>
</html>