我正在从一个数据库输出值(它并不是公开的,但它对公司的用户开放--也就是说,我不担心XSS)。
我试图输出这样一个标签:
<a href="" onclick="DoEdit('DESCRIPTION');">Click Me</a>DESCRIPTION实际上是数据库中的一个值,如下所示:
Prelim Assess "Mini" Report我试过用“\”替换“,但是不管我做了什么,Firefox总是在”评估“这个词后面的空格后切断我的JavaScript调用,这会引起各种各样的问题。
我必须提出一个显而易见的答案,但就我的生命而言,我想不出答案。
有人想指出我的白痴吗?
下面是整个HTML页面(它最终将是一个ASP.NET页面,但为了解决这个问题,我取出了除问题代码之外的其他所有内容)。
<html>
<body>
<a href="#" onclick="DoEdit('Preliminary Assessment \"Mini\"'); return false;">edit</a>
</body>
</html>发布于 2010-01-05 04:34:03
您需要转义正在写入DoEdit中的字符串,以清除双引号字符。它们导致onclick HTML属性过早关闭。
在JavaScript上下文中使用\转义字符是不够的。您需要用适当的XML实体表示( " )替换双引号。
发布于 2012-09-18 08:58:11
正如前面所建议的那样,"在这种特殊情况下可以工作,因为有了HTML。
但是,如果希望对任何上下文独立地转义JavaScript代码,则可以选择本机JavaScript编码:
'变成\x27
"变成\x22
所以你的点击会变成:
DoEdit('Preliminary Assessment \x22Mini\x22');
例如,当将一个JavaScript字符串作为参数传递给另一个JavaScript方法(alert()是一种简单的测试方法)时,这也是可行的。
我指的是重复的堆栈溢出问题,https://stackoverflow.com/questions/97578。
发布于 2010-01-05 05:27:25
<html>
<body>
<a href="#" onclick="DoEdit('Preliminary Assessment "Mini"'); return false;">edit</a>
</body>
</html>应该能起作用。
https://stackoverflow.com/questions/2004168
复制相似问题