@vgray

Как правильно экранировать html entities в JS?

Добрый день,

Приведенный код выдает ошибку "Uncaught SyntaxError: missing ) after argument list" . Похоже JS разворачивает ' в кавычку и из-за этого все ломается. Как правильно экранировать кавычки и другие html entitles в js?

<html>
<head>
    <script>
        function clickme(str)
        {
            console.log(str);
        }  
    </script>
</head>

<body>
    <a onclick="return clickme('click &#039; 20');" href="#">Click</a>
</body>
</html>
  • Вопрос задан
  • 1109 просмотров
Пригласить эксперта
Ответы на вопрос 2
DMShamonov
@DMShamonov
Frontend developer
Это делает не JS, а браузер. Ведь ты используешь html entity. Вот эта entity и преобразуется в текст.

А экранирование простое, как и везде:
<a onclick="return clickme('click \` 20');" href="#">Click</a>
Ответ написан
Комментировать
@vgray Автор вопроса
спасибо, дополнительный вопрос.

Предположим, что в функцию clickme передается пользовательский текст, который дальше будет вставляться в html. Как в этом случае лучше экранировать параметры? чтобы избежать XSS ?

<html>
<head>
    <script>
        function clickme(str)
        {
            document.getElementById("div-id").innerHTML = str;    
        }  
    </script>
</head>
<body>
    <div id="div-id"></div>
    <br/>
    <a onclick="return clickme('click &#039; 20');" href="#">Click</a>
</body>
</html>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы