在JavaScript onClick事件处理程序中转义双引号
下面的简单代码块可以在一个静态HTML页面中提供,但会导致JavaScript错误。 你应该如何在onClick处理程序中隐藏embedded的双引号(例如\“xyz)?请注意,HTML是通过从数据库中提取数据dynamic生成的,其数据是其他HTML代码的片段,可以是单个或双引号,似乎在双引号字符之前加一个反斜杠并不能解决问题。
<script type="text/javascript"> function parse(a, b, c) { alert(c); } </script> <a href="#x" onclick="parse('#', false, '<a href=\"xyz'); return false">Test</a>
你试过了吗
"
或者\x22
代替
\"
?
它需要被HTML转义,而不是Javascript转义。 将“更改为"
虽然我同意CMS以不显眼的方式(通过类似jquery或dojo的库)来做这件事,下面是工作原理:
<script type="text/javascript"> function parse(a, b, c) { alert(c); } </script> <a href="#x" onclick="parse('#', false, 'xyc"foo');return false;">Test</a>
barf的原因不是因为JavaScript,而是因为HTMLparsing器。 它没有逃脱的引号的概念,它寻找最终报价,find它并返回作为onclick函数。 这是无效的JavaScript虽然所以你没有find有关错误,直到JavaScript尝试执行该function..
您也可以尝试使用两个反斜杠(\\")
来转义转义字符。
我认为最好的方法是不加分配地分配onclick处理程序。
像这样的东西:
window.onload = function(){ var myLink = document.getElementsById('myLinkId'); myLink.onclick = function(){ parse('#', false, '<a href="xyz'); return false; } } //... <a href="#" id="myLink">Test</a>