奇怪的事情......
我有一个字符串文字作为常量标记传递给我的源代码(我不能事先预先处理或转义它)。
实施例
var username = "MYDOMAIN\tom";
username = username.replace('MYDOMAIN','');
某处的字符串包含一个反斜杠后跟一个字符。 在这一点上逃避反斜杠已经太晚了,所以我必须单独逃避这些特殊字符,如
username = username.replace(/\t/ig, 't');
但是,这在以下情况下不起作用:
var username = "MYDOMAIN\ulrike";
\ u似乎引入了一个unicode字符序列。 \ uLRIK不能被解释为unicode标志,因此Javascript引擎此时停止解释并且我的替换(/ \ u / ig,' u')来得太晚。
是否有人建议或解决如何转义包含在给定字符串文字中的非Unicode字符序列?在" MYDOMAIN \ bernd"中似乎与\ b类似的问题。
答案 0 :(得分:1)
我有一个传递给我的源代码的字符串文字
假设你没有任何<或者>,将其移动到HTML控件(而不是脚本块内)或元素内部,并使用Javacript读取值。像
这样的东西<div id="myServerData">
MYDOMAIN\tom
</div>
然后你检索它
alert(document.getElementById("myServerData").innerText);
重要:注入非转义内容,用户可以控制内容(比如这是在其他某个页面中输入的数据)是一种安全风险。这适用于您是以脚本还是HTML
注入它答案 1 :(得分:1)
编写var username = "MYDOMAIN\ulrike";
会引发语法错误。我想你有这个字符串来自某个地方。
我建议创建一些html元素并将它的innerHTML设置为接收到的值,然后将其拾取。
有类似的东西:
<div id="demo"></div>
然后执行document.getElementById("demo").innerHTML = username;
然后从那里读取document.getElementById("demo").innerHTML;
我想这应该可行。
重要提示:请确保不会将网页公开给脚本注入。如果是这样,这种方法很糟糕,不要使用它。