innerHTML автоматически удаляет части строки HTML? - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно вставить строку HTML-кода, содержащего встроенные обработчики событий в элемент, используя innerHTML.Примерно так:

document.getElementById('some-div')
  .innerHTML = '<button onclick="alert(\'&lt;html&gt;\');">&lt;html&gt;</button>';

Я ожидал получить такой результат:

<button onclick="alert('&lt;html&gt;');">&lt;html&gt;</button>';

, но фактический DOM выглядит так:

<button onclick="alert('<html>');">&lt;html&gt;</button>';

Почему встроенныйчасть обработчика событий автоматически покидает браузер?Можно ли это предотвратить без двойного побега?

1 Ответ

1 голос
/ 30 апреля 2019

Когда вы передаете данные HTML в браузер, устанавливая Element.innerHTML, браузер должен интерпретировать / анализировать HTML, чтобы отобразить его. Даже если он не отображает свойство onclick, он все равно должен разрешать кодировку. Как сказал Крис Барр, вам нужно перекодировать строку, чтобы при ее анализе браузером она получала правильную версию.

Используя простой кодировщик HTML, такой как https://opinionatedgeek.com/codecs/htmlencoder, вы можете перекодировать строку, и она должна вернуть "& lt; html & gt;".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...