[英]String is treated differently when extracted from DOM
我在使用Javascript時遇到了一個非常奇怪的問題。 當我從DOM中提取文本並嘗試對HTML實體進行解碼時,它不起作用。 但是,當我直接在代碼中分配值時,它就可以正常工作。
我只是不明白為什么在兩種情況下都將字符串區別對待。 我已經在FireFox和Chrome中進行了測試,並且都產生了相同的結果。
更新 :正確的輸出應為%7B(在解碼字符串之后)。 這意味着當我直接將值分配給變量時,它可以正常工作,但是從DOM中提取時,它就不能工作。 我如何從DOM中提取文本並對其進行解碼,以便生成“%7B”?
演示 : jsFiddle
HTML :
<div class="myclass">\u00257B</div>
JavaScript代碼:
$(document).ready(function(){
//Extracting the text from DOM
var myText = $(".myclass").html();
//decoding HTML entities
var decodedText = $("<div />").html(myText).text();
//alerting the decoded text
alert(decodedText); // output: \u00257B
//assigning the value directly to the variable
var myText2 = "\u00257B";
//decoding HTML entities
var decodedText2 = $("<div />").html(myText2).text();
//alerting decoded text
alert(decodedText2); // output: %7B
});
myText2
產生不同結果的原因是因為字符串文字中的反斜杠是轉義字符。
要逃避反斜杠,只需使用兩次:
myText2 = "\\u00257b";
也許有更好的方法,但是它會起作用:(如果文本的值是不受控制的輸入,則eval通常會被皺眉並且會帶來安全隱患)
myText = eval("\"" + decodedText + "\"")
我認為這是因為當您從dom中提取字符串時,“ \\ u”會轉義。
如果您這樣做var myText2 = "\\\%7B";
你會得到相同的結果
http://jsfiddle.net/9n6t5qxr/1/
如果您執行console.log('\%')
則會顯示%
,這就是為什么您看到%7B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.