如何从元素中获取原始内容(使用ascii代码)?

时间:2015-09-26 23:23:35

标签: javascript jquery dom ascii

有html代码:<p id="content">&mdash;<p>

输出应为<p id="content">&mdash;<p>&mdash;

我试着在下面找到它,但结果只有

&#13;
&#13;
document.writeln("Output:");
document.writeln(document.getElementById("content").innerHTML);
document.writeln(document.getElementById("content").innerText);
document.writeln(document.getElementById("content").outerHTML);
document.writeln(document.getElementById("content").outerHTML);
document.writeln(document.getElementById("content").textContent);
&#13;
<p id="content">&mdash;<p>
&#13;
&#13;
&#13;

如何通过JavaScript(或框架)实现输出?可能吗?

3 个答案:

答案 0 :(得分:2)

据我所知,在呈现元素之前,你不能轻松地获取元素的原始内容。但是,可以获取角色的UTF-16字符代码。

var content = document.getElementById("content").innerText;
var code = "&#" + content.charCodeAt(0) + ";";
var safeCode = code.replace("&", "&amp;");

//This prints the dash
document.writeln(code);

//This prints the raw code (&#8212;)
document.writeln("<br>" + safeCode);

//This will output &#8212; to the console
console.log(code);
Original content: <span id="content">&mdash;<span><br>

这为&mdash;提供了&#8212; UTF-16代码。

答案 1 :(得分:1)

不幸的是,使用纯JavaScript不可能实现这一点,但是对于像Underscore和jQuery这样的库,它是可能的。 jQuery的方式被认为不太安全(我不知道为什么),因此,我将编写使用Underscore来实现它的方法。

您可以使用下划线_.escape(string);进行此操作。

但是当你打印它时,浏览器会渲染它。要解决此问题,您可以拆分返回的字符串,然后在它们之间添加<span>元素。

请参阅the demo

  

这仅适用于&<>"和`。

答案 2 :(得分:1)

这是不可能的。这是一个例子,输出到控制台而不是页面。您必须查看控制台才能看到输出。 我按照这个说明进行了解释。

&#13;
&#13;
<!DOCTYPE html>
<html>
    <head>
        <title>Test JS entity capture</title>
    </head>

    <body>
        <p>
        From <em>"How can get original content(with ascii codes) from element?"</em><br>
        <code>http://stackoverflow.com/questions/32803029/</code>
        </p>

        <p id="targetP">
        This is <code>&amp;mdash;</code> : <span id="mdash">&mdash;</span>
        </p>
    </body>
    <script>
    var elm = document.getElementById('mdash');
    console.log('elm.innerHTML = ' + elm.innerHTML);
    console.log('elm.innerText = ' + elm.innerText);
    </script>
</html>
&#13;
&#13;
&#13;

会发生什么?

服务器发送源HTML,并且可能单独发送javascript 浏览器解析HTML并构建DOM树(文档对象模型)。

当它解析HTML时,它会将字符实体引用&mdash;转换为引用所代表的实际字符;现在,DOM包含字符,当您使用javascript获得该元素的innerTextinnerHTML时,您将获得该字符。您无法知道该字符是否已键入(就像我刚才输入的那样:在Mac上使用shift + option + dash)或者它最初是作为字符实体发送的。