Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Совместимость синтаксиса JavaScript в XML/HTML (https://javascript.ru/forum/css-html/34673-sovmestimost-sintaksisa-javascript-v-xml-html.html)

jsjob 14.01.2013 19:19

Совместимость синтаксиса JavaScript в XML/HTML
 
Практически "всё работает", но хочу просвЯтиться в теории и стандартах
<script type="text/javascript"><!--
var A=0;
--A;
var S="Здесь был Вася";
//-->
</script>

1) JS операция декремента в синтаксисе HTML обозначает конец комментария.
2) Кавычки в XML не допустимы.

И как дальше с этим жить? :-E

dmitriymar 14.01.2013 19:55

Цитата:

Сообщение от jsjob
И как дальше с этим жить?

учится для начала, а не придумывать проблемы
http://www.w3schools.com/xml/xml_cdata.asp

Цитата:

Сообщение от jsjob
<script type="text/javascript"><!--
var A=0;
--A;
var S="Здесь был Вася";
//-->
</script>

этож насколько браузер должен быть древним , чтоб так писать?

jsjob 14.01.2013 20:40

Насколько я понимаю, CDATA не будет работать в HTML-браузерах без XML-парсера.

Меня интересует вопрос - возможно ли оформить JS код так, чтоб HTML-страница была одновременно валидной как HTML4/5, так и XML, работала бы без ошибок в старых и специальных браузерах.

tenshi 14.01.2013 20:40

> JS операция декремента в синтаксисе HTML обозначает конец комментария.

только в sgml и толко внутри декларации. впрочем, не начинай комментарий

> Кавычки в XML не допустимы

допустимы

jsjob 14.01.2013 20:48

tenshi,
С первым, конечно, правильно, хотя я "предпочёл" просто написать A=A-1 ;)
Насчёт кавчек, не уверен, но по XML они д.б. заменены на мнемоники, и парсер должен останавливаться, если кавычка встретится вне тега. А на мнемонику можно заменить кавычки у скрипта только если скрипт вписывается в событие тега.

dmitriymar 14.01.2013 20:59

Цитата:

Сообщение от jsjob
Насколько я понимаю, CDATA не будет работать в HTML-браузерах без XML-парсера.

а это какие , что понимают только html? прошлого века выпуска?
Цитата:

Сообщение от jsjob
чтоб HTML-страница была одновременно валидной как HTML4/5, так и XML, работала бы без ошибок в старых и специальных браузерах.

а доктайп тогда зачем нужен по вашему? новые браузеры понимают старые стандарты -вот и пишите всё согласно самому старому стандарту
повторю ещё раз-не придумывайте проблемы самостоятельно

jsjob 14.01.2013 22:57

DOCTYPE - зло :-E

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

melky 14.01.2013 23:03

Цитата:

Сообщение от jsjob (Сообщение 227251)
Практически "всё работает", но хочу просвЯтиться в теории и стандартах
<script type="text/javascript"><!--
var A=0;
--A;
var S="Здесь был Вася";
//-->
</script>

1) JS операция декремента в синтаксисе HTML обозначает конец комментария.
2) Кавычки в XML не допустимы.

И как дальше с этим жить? :-E

интересно, для клиентов из какой вселенной вы сайт пишите, если такими вопросами задаётесь?

dmitriymar 14.01.2013 23:06

Цитата:

Сообщение от jsjob
Многолетняя практика показывает, что валидный и с DOCTYPE документ будет с большей вероятность сломан одним из браузеров, чем без этой хрени.

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

jsjob 14.01.2013 23:15

Цитата:

Сообщение от melky (Сообщение 227278)
интересно, для клиентов из какой вселенной вы сайт пишите, если такими вопросами задаётесь?

АПВС

Цитата:

Сообщение от dmitriymar (Сообщение 227279)
лучше бы у вас был хотя бы минимальный опыт

Большое спасибо

danik.js 16.01.2013 00:42

Цитата:

Сообщение от jsjob
DOCTYPE - зло

jsjob, я даже переходить по ссылке не стал, увидев в адресе *.narod.ru ))
Судя по тому что вы предлагаете вообще не указывать doctype, можно с уверенностью сказать что никакого опыта у вас нет. Самый практичный метод - указание доктайпа <!DOCTYPE html>. И не потому что это модно. Это реально самый "безопасный" и не добавляющий никаких проблем доктайп (в отличие от всяких xhtml strict и прочего). А доктайп нужен по одной простой причине - чтобы браузер не ушел в quirks mode, стыдно не знать. Причем этот доктайп не указываеть браузеру какой парсер использовать. Парсер зависит от Content-Type. Причем во всех современных браузерах в случае с text/html используется html5 парсер, даже если указан html4 или html3 доктайп.
Советую почитать это: http://habrahabr.ru/post/140155/

Что касается темы, то все просто:
<script type="text/javascript">
//<![CDATA[
var A=0;
--A;
var S="Здесь был Вася";
//]]>
</script>

И html, и xml парсеры будут оба довольны таким кодом )
Разве что древние браузеры отобразят скрипт, но в нем соверменная страница в любом случае развалится в говно, так что нет смысла печься о каких-то абстрактных пользователях Opera 3.0 или IE 4.3 (цифры взял с потолка)

jsjob 16.01.2013 01:19

Цитата:

Сообщение от danik.js (Сообщение 227485)
развалится в говно

-профессианальный термин, надо законспектировать :write:

danik.js 16.01.2013 03:47

jsjob, да, этот термин лучше всего тут подойдет.
Ради интереса, узнал что Opera 3 уже поддерживала скрипты. Попытался скачать opera 2 , но этой версии нету даже на фтп-сервере оперы: http://arc.opera.com/pub/opera/win/ но там самые старые версии идут начиная с 3.2 . Тоесть скорее на твой сайт зайдут с калькулятора чем с браузера, неподдерживающего тег script...


Часовой пояс GMT +3, время: 15:32.