Нет. упоминания спецификации HTML 5:
метод и formmethod атрибуты содержания перечисляются атрибуты со следующими ключевыми словами и состояниями:
ключевое слово добирается , отображение на состояние ДОБИРАЕТСЯ, указывая, что HTTP ПОЛУЧАЕТ метод. ПОЛУЧИТЬ метод должен только запросить и получить данные и не должен иметь никакого другого эффекта.
сообщение ключевого слова , отображаясь на государственный пост, указывая на метод POST HTTP. Метод THE POST запрашивает, чтобы сервер принял, что данные отправленной формы обрабатываются, который может привести к объекту, добавляемому к базе данных, созданию нового ресурса веб-страницы, обновлению существующей страницы или всем упомянутым результатам.
диалоговое окно ключевого слова , отображаясь на диалоговое окно состояния, указывая, что представление формы предназначается для закрытия диалогового окна, в котором форма оказывается, если таковые имеются, и иначе не отправляет.
недопустимое значение по умолчанию значения для этих атрибутов является ПОЛУЧИТЬ состоянием
, Т.е. HTML-формы только поддерживают , ДОБИРАЮТСЯ и POST как методы Запроса HTTP. Обходное решение для этого должно туннелировать другие методы через POST при помощи скрытого поля формы, которое читается сервером и запросом, диспетчеризированным соответственно.
Однако ДОБИРАЮТСЯ , , POST, ПОМЕСТИЛ , и УДАЛЯЮТ , поддерживаются реализациями XMLHttpRequest (т.е. вызовы Ajax) во всех главных веб-браузерах (IE, Firefox, Safari, Chrome, Opera).
Примечание по безопасности: использование этого ответа (сохраненного в исходной форме ниже) может привести к XSS-уязвимости в вашем приложении. Вы не должны использовать этот ответ. Прочтите ответ lucascaro для объяснения уязвимостей в этом ответе и используйте подход либо из этого ответа, либо вместо ответа Марка Эймери .
На самом деле, попробуйте
var decoded = $("<div/>").html(encodedStr).text();
Я думаю, вы путаете текст и методы HTML. Посмотрите на этот пример: если вы используете внутренний HTML-код элемента в качестве текста, вы получите декодированные HTML-теги (вторая кнопка). Но если вы используете их как HTML, вы получите представление в формате HTML (первая кнопка).
<div id="myDiv">
here is a <b>HTML</b> content.
</div>
<br />
<input value="Write as HTML" type="button" onclick="javascript:$('#resultDiv').html($('#myDiv').html());" />
<input value="Write as Text" type="button" onclick="javascript:$('#resultDiv').text($('#myDiv').html());" />
<br /><br />
<div id="resultDiv">
Results here !
</div>
Первая кнопка пишет: вот содержание HTML .
Вторая кнопка пишет: вот содержание HTML .
Кстати,
Использовать
myString = myString.replace( /\&/g, '&' );
Проще всего это сделать на стороне сервера, потому что, очевидно, в JavaScript нет собственной библиотеки для обработки сущностей, и я не нашел ее в верхней части результатов поиска для различные фреймворки, расширяющие JavaScript.
Поищите "объекты JavaScript HTML", и вы можете найти несколько библиотек для этой цели, но они '
Без jQuery:
функция decodeEntities (encodedString) {var textArea = document.createElement ('textarea'); textArea.innerHTML = encodedString; вернуть textArea.value; } console.log (decodeEntities ('1 & amp; 2')); // '1 & 2'
Это работает аналогично принятому ответу , но безопасно использовать с ненадежным пользовательским вводом.
Как отмечалось в Майк Самуэль , делая это с помощью Однако эта атака невозможна против Предупреждение : это делается с помощью jQuery * Благодаря Эру Пенкман за обнаружение этой уязвимости.
с ненадежным вводом пользователя, это XSS-уязвимость, даже если
функция decodeEntities (encodedString) {var div = document.createElement ('div'); div.innerHTML = encodedString; return div.textContent; } // Показывает предупреждение decodeEntities ('')
, потому что там не являются HTML-элементами, которые являются разрешенным содержимым
. Следовательно, любые HTML-теги, все еще присутствующие в 'закодированной' строке, будут автоматически закодированы браузером. function decodeEntities (encodedString) {var textArea = document.createElement ('textarea'); textArea.innerHTML = encodedString; вернуть textArea.value; } // Безопасно и возвращает правильный ответ console.log (decodeEntities (''))
.html ()
и . val ()
вместо использования .innerHTML
и .value
также небезопасен * для некоторых версий jQuery, даже при использовании текстового поля
. Это связано с тем, что более старые версии jQuery намеренно и явно оценивали сценарии , содержащиеся в строке, переданной в .html ()
. Следовательно, такой код показывает предупреждение в jQuery 1.8: // ") .html ("" ) .text (); // ->
Мне просто нужно было иметь символ объекта HTML (⇓) в качестве значения для кнопки HTML. HTML-код с самого начала выглядит хорошо в браузере:
<input type="button" value="Embed & Share ⇓" id="share_button" />
Теперь я добавлял переключатель, который также должен отображать символ. Это мое решение
$("#share_button").toggle(
function(){
$("#share").slideDown();
$(this).attr("value", "Embed & Share " + $("<div>").html("⇑").text());
}
. На кнопке снова отображается ⇓. Надеюсь, это может кому-то помочь.