Я попробовал приведенный ниже код для проверки того, что обратный слеш в значении атрибута HTML делает символ рядом с ним экранированным:
<button id="b1" onclick="$('body').append('<button onclick=alert(\'something\');>')">test</button>
Здесь, если обратная косая черта работает, тогда, когда мы нажимаем на # b1, должна добавляться новая кнопка, а когда мы нажимаем на эту новую кнопку, должно появляться новое предупреждение. Но это не так. Это означает, что обратная косая черта не будет работать в атрибутах HTML.
Это правильно?
Тогда как мне избежать вещей?
Когда я попытался открыть эту веб-страницу с view-source: prefix, я увидел код, как показано ниже:
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Hi there!
</title>
<meta name="viewport" content="width=device-width">
<script src="jQuery.js"></script>
<style>
.red{color: red;}
</style>
</head>
<body>
<button id="b1" onclick="$('body').append('<button onclick=alert(+AFw'something+AFw');>test</button>')">
test
</button>
<script src="question.js"></script>
</body>
</html>
Здесь обратные слеши заменяются на + AFW . Это неправильно ?
Кроме того, если я попытаюсь изменить значение атрибута onclick на doIt();
и добавить приведенный ниже код в файл question.js, он будет отлично работать:
function doIt(){
alert("<button onclick=\"alert('hi');\"> ");
}
Но, как следует из вопроса, мы должны выяснить, почему экранирование обратной косой черты не работает в значениях атрибутов HTML. Также я хочу определить, что произойдет при нажатии кнопки, прямо в атрибуте.
Заранее благодарим за предоставление информации .....