获取javascript节点原始内容
我在一个变量中有一个javascript节点,如果我将该变量记录到控制台,我会得到以下结果:获取javascript节点原始内容,javascript,string,object,Javascript,String,Object,我在一个变量中有一个javascript节点,如果我将该变量记录到控制台,我会得到以下结果: "​asekuhfas eo" asekuhfas eo 只是javascript节点中的一些随机字符串。我想让它成为一根弦。但问题是,当我在上面使用文本内容时,我得到了以下信息: "​asekuhfas eo" asekuhfas eo 将转换特殊字符。我需要让字符串看起来像这样: ​asekuhfas eo var a = d
"​asekuhfas eo"
asekuhfas eo
只是javascript节点中的一些随机字符串。我想让它成为一根弦。但问题是,当我在上面使用文本内容时,我得到了以下信息:
"​asekuhfas eo"
asekuhfas eo
将转换特殊字符。我需要让字符串看起来像这样:
​asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
if (a.charCodeAt(i) > 1000)
result += "&#" + a.charCodeAt(i) + ";";
else
result += a[i];
}
这样,我可以处理字符串中存在的特殊字符识别
如何使该节点对象按字面意思成为字符串?textContent正确返回所有内容,如&8203;是的,即:
通常缩写为ZWSP
此字符用于不可见字分隔和换行控制;它没有宽度,但它在两个字符之间的存在并不能阻止对齐中增加字母间距
可以通过以下方式轻松证明:
var div = document.createElement('div');
div.innerHTML = '​xXx';
console.log( div.textContent ); // "xXx"
console.log( div.textContent.length ); // 4
console.log( div.textContent[0].charCodeAt(0) ); // 8203
如中所述,将UTF字符转换回HTML实体有点棘手,他的解决方案对于字符代码高于1000的非标准字符完全有效。作为替代方案,我可以提出一个较短的RegExp解决方案,该解决方案将给出相同的结果:
var result = div.textContent.replace(/./g, function(x) {
var code = x.charCodeAt(0);
return code > 1e3 ? '&#' + code + ';' : x;
});
console.log( result ); // "​xXx"
为了获得更好的解决方案,您可以看看哪个可以处理所有HTML特殊字符。textContent正确返回所有内容,如&8203;是的,即:
通常缩写为ZWSP
此字符用于不可见字分隔和换行控制;它没有宽度,但它在两个字符之间的存在并不能阻止对齐中增加字母间距
可以通过以下方式轻松证明:
var div = document.createElement('div');
div.innerHTML = '​xXx';
console.log( div.textContent ); // "xXx"
console.log( div.textContent.length ); // 4
console.log( div.textContent[0].charCodeAt(0) ); // 8203
如中所述,将UTF字符转换回HTML实体有点棘手,他的解决方案对于字符代码高于1000的非标准字符完全有效。作为替代方案,我可以提出一个较短的RegExp解决方案,该解决方案将给出相同的结果:
var result = div.textContent.replace(/./g, function(x) {
var code = x.charCodeAt(0);
return code > 1e3 ? '&#' + code + ';' : x;
});
console.log( result ); // "​xXx"
为了获得更好的解决方案,您可以看看哪个可以处理所有HTML特殊字符。正如VisionN所指出的,不可能反转UTF-8编码。 然而,通过使用charCodeAt,您可能仍然可以实现您的目标 假设你有你的文本内容。通过遍历每个字符,检索其字符码,并在前面加上前缀&以及追加;你可以得到你想要的结果。这种方法的缺点显然是,您将在这个注释中拥有每一个字符,甚至那些不需要它的字符。通过引入某种阈值,您可以将此限制为仅限外来角色 一个非常幼稚的方法是这样的:
​asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
if (a.charCodeAt(i) > 1000)
result += "&#" + a.charCodeAt(i) + ";";
else
result += a[i];
}
正如VisionN所指出的,不可能反转UTF-8编码。 然而,通过使用charCodeAt,您可能仍然可以实现您的目标 假设你有你的文本内容。通过遍历每个字符,检索其字符码,并在前面加上前缀&以及追加;你可以得到你想要的结果。这种方法的缺点显然是,您将在这个注释中拥有每一个字符,甚至那些不需要它的字符。通过引入某种阈值,您可以将此限制为仅限外来角色 一个非常幼稚的方法是这样的:
​asekuhfas eo
var a = div.textContent;
var result = "";
var treshold = 1000;
for (var i = 0; i < a.length; i++) {
if (a.charCodeAt(i) > 1000)
result += "&#" + a.charCodeAt(i) + ";";
else
result += a[i];
}
不确定这是否回答了OP的问题:如何让节点对象看起来像字符串一样?OP希望获取html中显示的字符串。即8203英镑;好的,我明白了。所以我想知道我是否能以其他方式获得DOM节点的外观?某种我可能不知道的数字或原始unicode编码方法?不确定这是否回答了OP的问题:如何让节点对象按字面上的意思成为字符串?OP希望获取html中显示的字符串。即8203英镑;好的,我明白了。所以我想知道我是否能以其他方式获得DOM节点的外观?某种我可能不知道的数字或原始unicode编码方法?离题:它被称为DOM节点。你读过标记raw的描述吗?@hon2a我是说DOM节点,在javascript中,澄清起来似乎是多余的。@Giacomo d'Antonio Oh geese,不,我没有:|更确切地说,你可能想检查并编码innerHtml,如果你想显示特殊字符。Offtopic:它被称为DOM节点。你读过标记raw的描述吗?@hon2a好吧,我的意思是DOM节点,在javascript中,澄清起来似乎是多余的。@Giacomo d'Antonio Oh geese,不,我没有:|更确切地说,你可能想检查并编码innerHtml,如果你想展示这些特殊的角色,太棒了!工作起来很有魅力:良好的思维。考虑到我只对一个特定的字符代码感兴趣,这尤其有用。因此,我可以将a.charCodeAti>1000替换为a.charCodeAti==8203Marvelous!工作很有魅力:好的思维。考虑到我只对那一个sp感兴趣,这尤其有用 特定字符代码。因此,我可以将a.charCodeAti>1000替换为a.charCodeAti==8203