Получить непарсированное содержимое элемента - PullRequest
5 голосов
/ 14 апреля 2020

Я хочу получить содержимое элемента без его анализа. В этом случае результаты должны быть такими, однако все методы, которые я пробовал, анализируют содержимое и возвращают. Как мне получить актуальный контент.

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 Ответ

2 голосов
/ 14 апреля 2020

Самый простой подход заключается в использовании языка "бэкэнда" для преобразования вашего заданного символа, поскольку большинство из них (например, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...