Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Странное поведение браузеров (https://javascript.ru/forum/misc/3468-strannoe-povedenie-brauzerov.html)

Dicot 24.04.2009 16:13

Kolyaj строку то вывести не трудно и даже браузер ето нормально кушает, а вот валидатор - нед

Kolyaj 24.04.2009 16:35

Вывод строки на валидатор не влияет. На него влияет то, что Gvozd сказал.

Dicot 24.04.2009 17:13

а если html-евский doctype использовать все равно эта cdata нужна?

x-yuri 24.04.2009 17:23

Цитата:

Возникает вопрос, какая ж польза от ентого валидатора акромя вреда
от него только польза вообще-то, по сообщениям валидатора ты бы мог сам разобраться в чем дело
Цитата:

Вы, x-yuri, имели в виду эту строку спецификации
да, и я бы предложил следующие способы, как исправить ситуацию (чтобы валидатор не ругался): '<'+'/script>', '<\/script>'
Цитата:

а если html-евский doctype использовать все равно эта cdata нужна?
нет, http://www.w3.org/TR/xhtml1/#h-4.8
http://www.w3.org/TR/xhtml1/dtds.htm...ict.dtd_script
http://www.w3.org/TR/html401/interac...ml#edef-SCRIPT
p.s. есть подозрение, что ты document.write используешь, так вот лучше его не использовать

Dicot 25.04.2009 14:19

<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>test</title>
  </head>
  <body>
    <script type="text/javascript">
    <![CDATA[
      alert("</script>");
    ]]>
    </script>
  </body>
</html>

- этот текст действительно нравится валидатору, только вот в браузерах отображается неверно :( (cdata не спасает)
Да, действительно использовал write(). А что в нем плохого?
Мне, например, нужно было создать новое окошко с некоторым содержимым. Если создавать элементы методами DOM - это ж сколько кода...
А если так:
newWin.document.open('text/html');
newWin.document.write(text);
newWin.document.close();

- всего 3 строчки

Kolyaj 25.04.2009 14:32

Цитата:

Сообщение от Dicot
этот текст действительно нравится валидатору, только вот в браузерах отображается неверно

Я вам два раза уже написал. Браузер берет текст скрипта до тега </script>, поэтому его нельзя использовать во внедренных в HTML скриптах.

Gvozd 25.04.2009 15:05

Это кушается на отлично валидатором, оперой и ослом.
второй огнелис запарывается на парсинге.
видимо их движок в меньшей степени расчитан на поддержку XHTML
UPD: Хром тоже нормально работает.третий огнелис не научился адекватно работать
Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>тест</title>
<script type="text/javascript">
<!--//<![CDATA[
alert("</script>");
//]]>-->
</script>
</head>
<body>
</body>
</html>

а вот этот вариант нравится всем:
Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>тест</title>
<script type="text/javascript">
<!--//<![CDATA[
alert("</scr"+"ipt>");
//]]>-->
</script>
</head>
<body>
</body>
</html>

Мораль:для кросбраузерности все же надо использовать второй вариант.
Мораль2:про валидатор также не забываем.очень полезный инструмент

x-yuri 25.04.2009 16:25

Цитата:

Да, действительно использовал write(). А что в нем плохого?
Мне, например, нужно было создать новое окошко с некоторым содержимым. Если создавать элементы методами DOM - это ж сколько кода...
скрипты в body приостанавливают дальнейший рендеринг страницы, смешивается разметка с кодом, часто создают проблемы начинающим. В общем, обычно он ничего хорошего не приносит
но в твоем случае может и оправдано. Хотя можно было для нового окна сделать свою html-страничку и скорректировать ее после загрузки, при этом в твоем скрипте было бы лучше видно, какая информация в него передается (если такая вообще есть)

Dicot 25.04.2009 17:55

Gvozd а про то, что cdata надо так хитро прятать в комментарии тоже в спецификации написано?

x-yuri 25.04.2009 18:11

Цитата:

про то, что cdata надо так хитро прятать в комментарии тоже в спецификации написано?
это есть здесь - Sending XHTML as text/html Considered Harmful


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