当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中转义引号

如何解决《在JavaScript中转义引号》经验,为你挑选了6个好方法。

我正在从数据库中输出值(它不是真正对公共条目开放,但它可以由公司的用户输入 - 这意味着,我不担心XSS.)

我正在尝试输出这样的标签:

Click Me

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

Prelim Assess "Mini" Report

我已经尝试用"替换"代替,但无论我尝试什么,Firefox都会在" 评估 "一词之后的空格之后切断我的JavaScript调用,这会导致各种各样的问题.

我必须得到明显的答案,但对于我的生活,我无法理解.

有人想指出我的愚蠢吗?

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


    
        edit
    

Aaron.. 203

您需要转义要写入的字符串DoEdit以清除双引号字符.它们导致onclickHTML属性过早关闭.

\在HTML上下文中使用JavaScript转义字符是不够的.您需要使用正确的XML实体表示替换双引号".



1> Aaron..:

您需要转义要写入的字符串DoEdit以清除双引号字符.它们导致onclickHTML属性过早关闭.

\在HTML上下文中使用JavaScript转义字符是不够的.您需要使用正确的XML实体表示替换双引号".


示例替换代码:`'mystring'.replace(/"/ g,'"');`
显然我看不懂.谢谢你的回答.
这不是一个javascript问题,它是一个HTML/XML编码问题:你不能在属性值中包含双引号字符而不会转义它们......否则浏览器/解析器会认为你正在结束属性值声明.
在之前的评论中有一个额外的报价.有效的代码是'mystring'.replace(/'/ g,'"');

2> tsemer..:

" 因为HTML上下文,我会在这个特殊情况下工作,正如我之前所建议的那样.

但是,如果你希望你的JavaScript代码能够独立逃过任何情况下,你可以选择本地JavaScript编码:
'\x27
"\x22

所以你的onclick会变成:
DoEdit('Preliminary Assessment \x22Mini\x22');

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

我指的是重复的Stack Overflow问题,如何在onClick处理程序中转义JavaScript代码中的字符串?.


谢谢!你的答案更正确,因为无论上下文如何,它都是本机JavaScript.

3> kristian..:

    
        edit
    

应该做的伎俩.



4> rohtakdev..:

伙计们,已经有了unescapeJavaScript中的功能,可以解决这个问题\":



escape/unescape已弃用.虽然encodeURI不仅仅是引用.http://gotochriswest.com/blog/2011/05/23/escape-unescape-deprecated/
"逃脱"/"unes​​cape"的组合做了我需要的.谢谢.

5> dl...:

问题是HTML无法识别转义字符.您可以通过使用HTML属性的单引号和onclick的双引号来解决这个问题.

edit


让人惊讶.我想知道为什么我自然而然地使用'过去的属性'.我从来没有深入研究过这一切.谢谢.

6> Ron Royston..:

我基本上就是这样做的str.replace(/[\""]/g, '\\"').

var display = document.getElementById('output');
var str = 'class="whatever-foo__input" id="node-key"';
display.innerHTML = str.replace(/[\""]/g, '\\"');

//will return class=\"whatever-foo__input\" id=\"node-key\"
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有