获取未解析的元素内容

时间:2020-04-14 09:11:25

标签: javascript jquery

我想获取一个元素的内容而不对其进行解析。在这种情况下,结果应为é。但是我尝试过的所有方法都会解析内容并返回é。如何获取实际内容。

console.log('javascript textContent:'+document.getElementById('test').textContent);
console.log('javascript innerText:'+document.getElementById('test').innerText);
console.log('javascript innerHTML:'+document.getElementById('test').innerHTML);
console.log('jQuery text():'+$('#test').text());
console.log('jQuery html():'+$('#test').html());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test">&eacute;</div>

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用“后端”语言转换给定的char,因为其中大多数(例如PHP和.net)为此提供了内置函数。

不幸的是,没有可用的普通函数在javascript中实现此功能(至少据我所知)。

例如在php中,将是:

string htmlentities(string $string....)

对于javascript,您可以创建自己的解决方案。 基本上创建您所需的html实体的列表,或采用这样的预定义列表(https://raw.githubusercontent.com/w3c/html/master/entities.json)并从那里开始工作。

遍历每个对象,并检查对象中是否存在搜索到的字符(é)。

为加快此过程,我将JSON文件保存到您的虚拟主机,并可能通过删除不需要的实体来减小其大小。

这可能不是最漂亮的解决方案,但是绝对可以很好地完成工作。

let element = document.getElementById('test').textContent;


fetch("https://raw.githubusercontent.com/w3c/html/master/entities.json")
  .then((resp) => resp.json()) // Transform the data into json
  .then(function(data) {
    Object.keys(data).forEach(function(key){        
    if (data.hasOwnProperty(key)){
        if(data[key].characters === element) {
          console.log(key);
        }
    }
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test">&eacute;</div>