Строковые проблемы с двойными кавычками в JavaScript - PullRequest
7 голосов
/ 10 мая 2011

Это мой код:

<script>
    function popupTest(title) {
        alert(title);
        return false;
    }
</script>

<a href="" onclick="return popupTest('This is &#039;some&#039; &quot;test&quot; string')"><span>Recommend</span></a>

При использовании Firefox 4 я получаю ошибку:

Error: missing ) after argument list
Source Code:
return popupTest('This is 'some' "test" string')

Это похоже на декодирование HTML-объектов, но я не знаю почему.

тоже пробовал ...

<a href="" onclick="return popupTest('This is \'some\' \"test\" string')"><span>Recommend</span></a>

Что выдает ошибку:

Error: unterminated string literal
Source Code:
return popupTest('This is \'some\' \

1 Ответ

13 голосов
/ 10 мая 2011

&#039; - это HTML для '.Таким образом, для первого примера HTML анализируется и передается механизм JavaScript:

return popupTest('This is 'some' "test" string')

… а второй ' завершает строку.

С другой стороны:

onclick="return popupTest('This is \'some\' \"test\" string')"

Анализируется как:

Атрибут onclick со значением return popupTest('This is \'some\' \, за которым следуют некоторые недействительные данные.

Вам нужно разобраться с JavaScriptсначала:

return popupTest('This is \'some\' "test" string')

и , затем экранируйте его для HTML:

onclick="return popupTest('This is \'some\' &quot;test&quot; string')"

Возможно, было бы лучше использовать ненавязчивый JavaScript и привязкуобработчики событий с JavaScript вместо использования встроенных атрибутов событий.

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