我想获取一个元素的内容而不对其进行解析。在这种情况下,结果应为é。但是我尝试过的所有方法都会解析内容并返回é。如何获取实际内容。
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">é</div>
答案 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">é</div>