我正在尝试"'"
在 JavaScript 中取消转义 HTML 转义撇号 ( ),但以下内容似乎不适用于 devtools 控制台行:
unescape(''');
输出很简单:
"'"
它也不适用于 Underscore 的 unescape:
_.unescape(''')
我究竟做错了什么?
我正在尝试"'"
在 JavaScript 中取消转义 HTML 转义撇号 ( ),但以下内容似乎不适用于 devtools 控制台行:
unescape(''');
输出很简单:
"'"
它也不适用于 Underscore 的 unescape:
_.unescape(''')
我究竟做错了什么?
unescape
与 HTML 字符实体无关。这是一个旧的、已弃用的函数,用于解码用 编码的文本escape
,这是一个旧的、已弃用的函数,用于以一种在现代世界中不太可能有用的方式对文本进行编码。:-)
如果您需要将该 HTML 转换为纯文本,最简单的方法是通过元素:
var div = document.createElement('div');
div.innerHTML = "'";
alert(div.firstChild.nodeValue);
请注意,上述内容依赖于 HTML 文本中没有定义任何元素这一事实,因此它知道只有一个 的子节点div
,即文本节点。
对于更复杂的用例,您可以使用div.innerText
(如果有的话)或div.textContent
:
var div = document.createElement('div');
div.innerHTML = "'";
alert(div.innerText || div.textContent || "");
通过createElement
在 TJ 的回答中使用 like,您可以向 XSS 攻击敞开大门。
DOMParser
是正确取消转义 HTML 实体(包括)的更安全的方法'
function unescape(string) {
return new DOMParser().parseFromString(string,'text/html').querySelector('html').textContent;
}
console.log(unescape('''));
您可以将上述函数与来自任何来源的字符串一起使用,并且该字符串将无法通过包含 JavaScript 来修改您的页面或窃取数据。