首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转义引号在JavaScript中

转义引号在JavaScript中
EN

Stack Overflow用户
提问于 2010-01-05 04:30:52
回答 11查看 554.2K关注 0票数 246

我正在从一个数据库输出值(它并不是公开的,但它对公司的用户开放--也就是说,我不担心XSS)。

我试图输出这样一个标签:

代码语言:javascript
复制
<a href="" onclick="DoEdit('DESCRIPTION');">Click Me</a>

DESCRIPTION实际上是数据库中的一个值,如下所示:

代码语言:javascript
复制
Prelim Assess "Mini" Report

我试过用“\”替换“,但是不管我做了什么,Firefox总是在”评估“这个词后面的空格后切断我的JavaScript调用,这会引起各种各样的问题。

我必须提出一个显而易见的答案,但就我的生命而言,我想不出答案。

有人想指出我的白痴吗?

下面是整个HTML页面(它最终将是一个ASP.NET页面,但为了解决这个问题,我取出了除问题代码之外的其他所有内容)。

代码语言:javascript
复制
<html>
    <body>
        <a href="#" onclick="DoEdit('Preliminary Assessment \"Mini\"'); return false;">edit</a>
    </body>
</html>
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-01-05 04:34:03

您需要转义正在写入DoEdit中的字符串,以清除双引号字符。它们导致onclick HTML属性过早关闭。

在JavaScript上下文中使用\转义字符是不够的。您需要用适当的XML实体表示( &quot; )替换双引号。

票数 235
EN

Stack Overflow用户

发布于 2012-09-18 08:58:11

正如前面所建议的那样,&quot;在这种特殊情况下可以工作,因为有了HTML。

但是,如果希望对任何上下文独立地转义JavaScript代码,则可以选择本机JavaScript编码:

'变成\x27

"变成\x22

所以你的点击会变成:

DoEdit('Preliminary Assessment \x22Mini\x22');

例如,当将一个JavaScript字符串作为参数传递给另一个JavaScript方法(alert()是一种简单的测试方法)时,这也是可行的。

我指的是重复的堆栈溢出问题,https://stackoverflow.com/questions/97578

票数 112
EN

Stack Overflow用户

发布于 2010-01-05 05:27:25

代码语言:javascript
复制
<html>
    <body>
        <a href="#" onclick="DoEdit('Preliminary Assessment &quot;Mini&quot;'); return false;">edit</a>
    </body>
</html>

应该能起作用。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2004168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档