Mat*_*wdy 204 javascript quotes escaping
我正在从数据库中输出值(它不是真正对公共条目开放,但它可以由公司的用户输入 - 这意味着,我不担心XSS.)
我正在尝试输出这样的标签:
<a href="" onclick="DoEdit('DESCRIPTION');">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
DESCRIPTION实际上是数据库中的值,如下所示:
Prelim Assess "Mini" Report
Run Code Online (Sandbox Code Playgroud)
我已经尝试用"替换"代替,但无论我尝试什么,Firefox都会在" 评估 "一词之后的空格之后切断我的JavaScript调用,这会导致各种各样的问题.
我必须得到明显的答案,但对于我的生活,我无法理解.
有人想指出我的愚蠢吗?
这是整个HTML页面(最终它将是一个ASP.NET页面,但为了解决这个问题,我除了问题代码之外还拿出了其他所有内容)
<html>
<body>
<a href="#" onclick="DoEdit('Preliminary Assessment \"Mini\"'); return false;">edit</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Aar*_*ron 203
您需要转义要写入的字符串DoEdit以清除双引号字符.它们导致onclickHTML属性过早关闭.
\在HTML上下文中使用JavaScript转义字符是不够的.您需要使用正确的XML实体表示替换双引号".
tse*_*mer 91
" 因为HTML上下文,我会在这个特殊情况下工作,正如我之前所建议的那样.
但是,如果你希望你的JavaScript代码能够独立逃过任何情况下,你可以选择本地JavaScript编码:
'变\x27
"变\x22
所以你的onclick会变成:DoEdit('Preliminary Assessment \x22Mini\x22');
例如,当将JavaScript字符串作为参数传递给另一个JavaScript方法(这alert()是一个简单的测试方法)时,这也会起作用.
我指的是重复的Stack Overflow问题,如何在onClick处理程序中转义JavaScript代码中的字符串?.
kri*_*ian 33
<html>
<body>
<a href="#" onclick="DoEdit('Preliminary Assessment "Mini"'); return false;">edit</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
roh*_*dev 23
伙计们,已经有了unescapeJavaScript中的功能,可以解决这个问题\":
<script type="text/javascript">
var str="this is \"good\"";
document.write(unescape(str))
</script>
Run Code Online (Sandbox Code Playgroud)
dl.*_*dl. 12
问题是HTML无法识别转义字符.您可以通过使用HTML属性的单引号和onclick的双引号来解决这个问题.
<a href="#" onclick='DoEdit("Preliminary Assessment \"Mini\""); return false;'>edit</a>
Run Code Online (Sandbox Code Playgroud)
我基本上就是这样做的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\"Run Code Online (Sandbox Code Playgroud)
<span id="output"></span>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
432764 次 |
| 最近记录: |