解码转义的javascript字符串时遇到了一个奇怪的问题。
这是测试代码,从data属性获取转义字符串不起作用它只是原始打印出来。第二个例子工作正常。
var emailText = $('#emaildata').data('email-text');
var unescapedEmailText = decodeURIComponent(emailText);
alert(unescapedEmailText);
var emailText2 = "Blah blah edit blah foo\x27\x0a\x0a\x0a\x27\x27\x27";
var unescapedEmailText2 = decodeURIComponent(emailText2);
alert(unescapedEmailText2);
这是一个显示功能损坏的jsfiddle。 http://jsfiddle.net/wnegH/2/
我确定我正在做一些愚蠢的事情,但我无法理解......
答案 0 :(得分:2)
您在data-email-text
属性中放置的内容不是javascript字符串。因此,在其中使用\x27
,只是意味着\x27
字符串按原样而不是相应的ASCII字符。
以下是an example如何达到预期效果:
<div id="emaildata" data-email-text="Blah%20blah%20edit%20blah%20foo'%0A%0A%0A'''"></div>
然后:
var emailText = $('#emaildata').data('email-text');
var unescapedEmailText = decodeURIComponent(emailText);
alert(unescapedEmailText);
显然,我在data-email-text
属性中使用的字符串是通过调用目标字符串上的encodeURIComponent
函数获得的。
答案 1 :(得分:1)
JavaScript转义序列(例如\x27
)在HTML中没有特殊含义。您需要使用character references或真实字符。