JavaScript htmlentities Французский - PullRequest
6 голосов
/ 04 февраля 2011

У меня есть страница .NET MVC со списком элементов, каждый из которых имеет <%: %> закодированные описания в rel. Я хочу иметь возможность искать все элементы с rel, который содержит мой поисковый запрос.

Одно из полей имеет значение с htmlentities rel='D&eacute;coration'

Я набираю «Décoration» в поле поиска, и пусть jQuery ищет все элементы, имеющие атрибут «rel», который содержит (indexOf! = -1) это значение:

результатов нет!

Почему? потому что Décoration != D&eacute;coration.

Что было бы лучшим решением для сравнения этих двух? (Должен работать для всех специальных символов с акцентом, а не только &eacute;)

P.S. (Я пробовал escape / unescape с обеих сторон, также попробовал трюк, чтобы добавить его в div и затем прочитать его как текст, это заменяет опасные вещи, но не заменяет é (это не обязательно, потому что это действительно в utf -8 все равно))

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Так как &eacute; и т.п. являются html-объектами, вы можете установить html-содержимое временного div с искаженной строкой и извлечь декодированную строку, используя текстовое содержимое элемента. Браузер выполнит работу по расшифровке за вас.

Использование jQuery:

function searchInRel(needle) {
    return $('[rel]').filter(function(i,e) {
        var decodedText = $('<div/>').html(e.attr('rel')).text();
        return (decodedText.indexOf(needle) != -1);
    };
}

Использование только DOM:

function decodeEntities(text) {
    var tempDiv = document.getElementById('tempDiv');
    tempDiv.innerHTML = text;
    return tempDiv.textContent;
}
1 голос
/ 09 мая 2011

Если вы обслуживаете свои страницы в кодировке UTF-8, вам не нужно использовать объекты для всех акцентированных символов. Проблема решена.

0 голосов
/ 06 апреля 2011

Вы можете декодировать html-объекты.Просто скопируйте два метода javascript из ЗДЕСЬ

var decoded = 'Décoration';
var entity = html_entity_decode('D&eacute;coration');
console.log(decoded == entity);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...