测试特殊字符JavaScript

Testing for special characters JavaScript

本文关键字:JavaScript 特殊字符 测试      更新时间:2023-09-26

假设我有这样一个HTML元素:

<td>&mdash;</td>

当被浏览器解析时,&mdash;被转换为实际的-破折号,如下所示:

<td>—</td>

我如何测试&mdash;不使用其他字符在我的JavaScript代码?

console.log(elem.innerHTML == "&mdash;"); // false
console.log(elem.textContent == "&mdash;"); // false
console.log(elem.innerHTML == "—"); // true
console.log(elem.textContent == "—"); // true

您可以创建一个新的DOM元素,并比较两者:

/**
 * Test that a DOM element's inner HTML is === &mdash;
 */
function mdashTest(el) {
    var tempEl = document.createElement('div');
    tempEl.innerHTML = '&mdash;';
    return el.innerHTML === tempEl.innerHTML;
}
// Test it!
elem = document.getElementById('dash');
alert( mdashTest( elem ) );
<div id="dash">&mdash;</div>

与emdash等价的unicode是'u2014。您可以使用此unicode与html.

进行比较。

HTML元数据的默认编码设置为UTF,因此所有实体都转换为UTF-8。阅读更多https://developer.mozilla.org/en/docs/Web/HTML/Element/meta#Attributes

var dash = document.getElementById('dash').innerText;
alert(dash === ''u2014');
<div id="dash">&mdash;</div>

我建议:

  1. DOMParser()

function parseToText(code) {
  return new DOMParser().parseFromString('<em>' + code + '</em>', "text/html").firstChild.textContent;
}
var is = document.getElementById('text').innerHTML == parseToText("&mdash;");
document.write("isEquals ", is, parseToText("&mdash;"));
<em id="text">&mdash;</em>

  • 或者,使用jQuery:
  • function parseToText(code) {
      return $("<em>" + code + "</em>").html()
    }
    var isEquals = document.getElementById('text').innerText == parseToText("&mdash;");
    document.write("isEquals ", isEquals);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <em id="text">&mdash;</em>

    或者,使用纯JavaScript:

    function parseToText(code) {
      return document.createRange().createContextualFragment(code).firstChild.textContent;
    }
    var isEquals = document.getElementById('text').innerText == parseToText("&mdash;");
    document.write("isEquals ", isEquals);
    <em id="text">&mdash;</em>