在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> 

你试过了吗

&quot; 或者\x22

代替

 \" 

它需要被HTML转义,而不是Javascript转义。 将“更改为&quot;

虽然我同意CMS以不显眼的方式(通过类似jquery或dojo的库)来做这件事,下面是工作原理:

 <script type="text/javascript"> function parse(a, b, c) { alert(c); } </script> <a href="#x" onclick="parse('#', false, 'xyc&quot;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>