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

Dicot 23.04.2009 11:57

Странное поведение браузеров
 
Здравствуйте.
Написал вот такую страничку и обнаружил, что браузеры (пробовал FireFox 3.0.8 и IE 6) её криво парсят: принимают строку "</script>" за конец элемента script.
Это баг такой или я чей-то не понимаю.
Объясните, пожалста.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <script type = "text/javascript">
      alert("</script>");
    </script>  
  </body>
</head>

Kolyaj 23.04.2009 12:14

Обычное поведение.
alert("</scr" + "ipt>");

Gvozd 23.04.2009 18:14

начнем с того, что если вы используете XHTML, то вы обязаны оборачивать код JS-а в блок CDATA

Dicot 23.04.2009 23:03

Если Вы имеете в виду doctype, так его можно убрать - будет то же самое

x-yuri 24.04.2009 01:36

Цитата:

начнем с того, что если вы используете XHTML, то вы обязаны оборачивать код JS-а в блок CDATA
Gvozd, а ты можешь привести пример проблемы, с которой можно столкнуться? А то в спецификации вроде написано, а придумать какой-то проблематичный пример у меня пока не получилось

Цитата:

Написал вот такую страничку и обнаружил, что браузеры (пробовал FireFox 3.0.8 и IE 6) её криво парсят: принимают строку "</script>" за конец элемента script.
Это баг такой или я чей-то не понимаю.
Объясните, пожалста.
http://www.w3.org/TR/html401/types.html#type-cdata

x-yuri 24.04.2009 01:38

Dicot а что валидатор говорит? http://validator.w3.org/

Kolyaj 24.04.2009 09:48

Цитата:

Сообщение от x-yuri
пример проблемы, с которой можно столкнуться?

Только валидатор.

Dicot 24.04.2009 15:58

Седня первый раз поразвлекался с валидатором - забавная весчь :)
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01//EN" 
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    <title>test</title>
  </head>
  <body>
    <script type="text/javascript">
      alert("</script>");
    </script>
  </body>
</html>

-этот текст ему не нравится.
Вы, x-yuri, имели в виду эту строку спецификации:
"The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content. In valid documents, this would be the end tag for the element." ?
Т.е. мой текст неправильный :(
Kolyaj этот фокус
alert("</scr" + "ipt>");

не проходит по той же причине.
Возникает вопрос, какая ж польза от ентого валидатора акромя вреда.
... если я ошибаюся, то как вывести строку "</script>" :)

Kolyaj 24.04.2009 16:00

Цитата:

Сообщение от Dicot
как вывести строку "</script>"

Я повторю, трудно чтоли
alert("</scr" + "ipt>");

Dicot 24.04.2009 16:10

<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01//EN" 
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    <title>test</title>
  </head>
  <body>
    <script type="text/javascript">
      alert("\u003c\u002fscript>");
    </script>
  </body>
</html>
- это прокатывает


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