Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > CDATA Section


Автор: Дрон 4.10.2005, 16:23
Вот http://forum.vingrad.ru/index.php?showtopic=25887&view=findpost&p=525804 недавно Alliance недавно привёл код:

Код

<script type="text/javascript" language="JavaScript">
<!--//--><![CDATA[//><!--
function code() {
   var str = "русский ник с пробелами с спец. ©имвол®ми";
   var encode_str = encodeURI(str);
   document.getElementById("qwe").innerHTML = "<b>До</b>: "+str+"<br /> <b>После</b>: "+encode_str;
}
//--><!]]>
</SCRIPT>

Как следует понимать вторую и предпоследнюю строчку?
Чует моё сердце -- это чтобы не нарушать XML разметку документа -- но ведь DOCTYPE у него был HTML smile
Да и вообще странно как-то сразу видеть и CDATA, и <!-- .

Поясните, плиз, зачем же всё-таки эти "ужасы" писать? smile

Автор: Aliance 4.10.2005, 18:32
Это совместимый не только с XHTML, но и со старыми браузерами и с браузерами недавнего прошлого и настоящего (IE 5 -- IE 6)
А XHTML браузеры вроде огнелиса и оперы должны смотреть на твой код как на обычный XML файлвроде огнелиса и оперы должны смотреть на твой код как на обычный XML файл

Сначала парсится XHTML, XML парсером, XML парсер убивает все комментарии,
А то что внутри секции <![CDATA[ ]]> он воспринимает буквально.
После чего, всё что внутри CDATA парсит JavaScript интепритатор.
Вообще если забить на старые браузеры и на IE, и ориентироваться только на браузеры будущего то достаточно вот такого кода:
Код

<script type="text/javascript">
<![CDATA[
function someFunc(x)
{
return x;
}
]]>
</script>


Полезно: http://xpoint.ru/forums/thread/25797.xhtml#messageAuthor246747

Цитата
Вот тут недавно Alliance

smile

Автор: Дрон 4.10.2005, 19:08
С ума сойти...
Вот за эту проклятую несовместимость я и не люблю веб-программирование smile
Добавлено @ 19:11
Цитата(Aliance @ 4.10.2005, 19:32)
Вообще если забить на старые браузеры и на IE

А что в IE не так?

Автор: Aliance 4.10.2005, 19:30
Цитата
А что в IE не так?

Видишь в первом комменте внутри двойной слеш?
Это для тех IE, которые не знают XHTML, следовательно не понимают конструкцию CDATA

Понимаешь почему так сложно? Просто этот код нацелен сразу на три разных типа браузеров.
•HTML браузеры, те которые не знают тега <script>(Очень старые)
•HTML браузеры, которые понимают тег скрипт (IE)
•XHTML браузеры (Opera, Mozilla)

Автор: Sardar 4.10.2005, 23:43
При этом вёрстка всё равно не валидная, т.к. аттрибута language у script нет smile

Автор: Aliance 4.10.2005, 23:58
Угу, его нет - нет его в XHTML, но я его пишу, т.к. он может быть полезен (но не всегда)

Автор: Дрон 5.10.2005, 08:26
Цитата
Понимаешь почему так сложно? Просто этот код нацелен сразу на три разных типа браузеров.

Понимаю smile

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

Ну я для себя всё равно решил, что ну его нах этот XHTML. Слава Богу, мне сайты верстать не приходится -- на работе этим дизайнеры занимаются (они, кстати, тоже только HTML используют), а дома -- мне эти навороты не нужны.

Автор: Aliance 5.10.2005, 11:46
Я собстевенно так тоже не пишу, т.к. с XML не работаю...пока...
Так там написано - т.к. это сгенерировано в моем редакторе, а там я все пишу, ведь стереть легче, чем написать )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)