javascript
2014-01-16 11 views 0 likes 
0

Я нахожусь есть проблемы со следующим HTMLПопутный двойные кавычки в JavaScript параметра функции

<span onClick="alert('hi&#34 more stuff')">Works</span><br/> 
<span onClick='alert("Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'>Works long text</span> 
<br /> 
<span onClick='alert("Far far &#34 away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'> Doesn't work long text</span> 

Моя проблема заключается в том, что в третьем OnClick обработчик, я получаю сообщение об ошибке незаконченный глоб строку в браузере. В реальной программе строки параметров генерируются на стороне клиента, поэтому вся кодировка должна произойти там.

В примере, который действительно работает, я пробовал и &#34;, и &quot; и работает в последнем примере. Но они работают в первом примере

Существует рабочая проба на http://jsfiddle.net/photo_tom/9d43U/1/

+2

просто использовать '\" 'вместо –

+2

Если вы сохранили ваш JS из вашего HTML-кода вы могли бы избежать проблемы кодирования цитаты внутри строки JS в атрибуте HTML. – zzzzBov

+0

Элементы 'span' не являются интерактивными , они не будут отображаться в заданном порядке фокусировки, вы должны серьезно подумать об использовании элементов '

ответ

3

Просто избежать его с помощью обратной косой черты \".

+0

Хотя это должно сработать, я склоняю вас к тому, чтобы указать, что он все еще недействителен HTML и подвержен случайному поломке, если кавычки вокруг атрибута изменяются. В идеале вы правильно кодируете символ двойной кавычки HTML. – zzzzBov

+1

@zzzzBov Я согласен с потенциальным поломкой, но как это недействительно HTML? – JLRishe

+0

@zzzzBov Я не понимаю вашу точку зрения. Прежде всего, если '' '' внутри строки JavaScript не имеет никакого отношения к действительности HTML. Затем, если вы заботитесь о котировках вокруг значения атрибута, не говоря уже о том, что это повлияет на котировки вокруг аргумента функции JS, Лучше всего связывать события динамически, а не встроенные. – VisioN

9

Чтобы использовать " в JavaScript " строку с разделителями, используйте \".

Чтобы использовать значение " в значении атрибута с разделителем HTML , используйте &quot;.

Объединить их в случае необходимости: \&quot;


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

+0

Я голосую за ненавязчивое предложение JavaScript, хотя вместо этого '\ "' более безопасный вариант, чем '\", если вы работаете внутри атрибутов HTML. – JLRishe

-3

сначала вы должны написать HTML, как:

attribute="property" 

так что если вы пишете:

onclick="alert('what you want here with encoded content it will work')" 

просмотреть обновленную стельку http://jsfiddle.net/darkyndy/9d43U/5/

Смежные вопросы