вопрос, можно ли склеить строку из entity из javascript.
в xul получаетсято что хочется, а из js получаются склееные имена entit'ей.

xul:
<menuitem id="someID" label="&ent1; &ent2;" />

js:
document.getElementById( "someID" ).setAttribute( "label", "&ent1;" + " " + "&ent2;" );

если нельзя, то как быть с локализацией?
спасибо.

Для javascript используются не entity, а properties.

посмотрю, но

Выделить код

Код:

document.getElementById( "someID" ).setAttribute( "label", "&ent1;" );

дает желаемый результат, и мне не ясно, почему при конкатенации, должно быть иначе.

Посмотрел, и правда работает. Но только если javascript-код неправильно оформлен в документе.
XML не позволяет просто вставить javascript в код страницы, его нужно экранировать с помощью <![CDATA[...]]>.
Т.е. неправильно:

<script type="text/javascript">
...
</script>

Нужно:

<script type="application/x-javascript">
<![CDATA[
...
]]>
</script>

Если Javascript не экранировать, то возникнет масса проблем, например простейший код

x="A&B";

вызовет ошибку.

Т.е. грамотно будет javascript поместить в <![CDATA[...]]>, и использовать properties.

сделал с помощью properties.
но у меня javascript не сидел в xul, он там был только объявлен.

mojo
Ну значит моё преположение не подтвердилось.. Странно, при "вынесенном" javascript'е у меня такой фокус не проходил, ну да ладно, не важно.

да, я был не прав.
у меня тоже такой фокус не проходит, просто показалось/не туда посмотрел.

...если javascript-код неправильно оформлен в документе.
XML не позволяет просто вставить javascript в код страницы, его нужно экранировать с помощью <![CDATA[...]]>...

Почему это не позволяет ? Позволяет, если в javascript-коде отсутствуют элементы XML-кода.

...
Если Javascript не экранировать, то возникнет масса проблем, например простейший код

вызовет ошибку...

То же самое можно сказать в случае

Выделить код

Код:

<script type="application/x-javascript">
<![CDATA[
...
x="]]>";
...
]]>
</script>

Проще в этом случае написать

Выделить код

Код:

<script type="application/x-javascript">
...
x="]]&gt;";
...
</script>

Anton
Можно, но сложно. Если использование entities в строковых переменных еще выглядит нормальным, то например, в конуструкции

Выделить код

Код:

...
if (A&amp;&amp;B) {...}
...

это будет совсем диким, IMHO.
Так что чтобы не заморачиваться с экранированием всего и вся, я считаю правильным повсеместное использование <![CDATA[...]]>. Тогда "проблемными" останутся лишь частные случаи (типа x="]]>";), которые можно по пальцам пересчитать.

а мне вообще кажется, что лучше держать котлеты отдельно, а мух отдельно.

mojo
Это само собой. Но иногда приходится поступать по-другому.