Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2009, 11:57
Dicot
 
Сообщений: n/a

Странное поведение браузеров
Здравствуйте.
Написал вот такую страничку и обнаружил, что браузеры (пробовал 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>
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2009, 12:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Обычное поведение.
alert("</scr" + "ipt>");
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2009, 18:14
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

начнем с того, что если вы используете XHTML, то вы обязаны оборачивать код JS-а в блок CDATA
Ответить с цитированием
  #4 (permalink)  
Старый 23.04.2009, 23:03
Dicot
 
Сообщений: n/a

Если Вы имеете в виду doctype, так его можно убрать - будет то же самое
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2009, 01:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

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

Цитата:
Написал вот такую страничку и обнаружил, что браузеры (пробовал FireFox 3.0.8 и IE 6) её криво парсят: принимают строку "</script>" за конец элемента script.
Это баг такой или я чей-то не понимаю.
Объясните, пожалста.
http://www.w3.org/TR/html401/types.html#type-cdata
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2009, 01:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Dicot а что валидатор говорит? http://validator.w3.org/
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2009, 09:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от x-yuri
пример проблемы, с которой можно столкнуться?
Только валидатор.
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2009, 15:58
Dicot
 
Сообщений: n/a

Седня первый раз поразвлекался с валидатором - забавная весчь
<!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>"
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2009, 16:00
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dicot
как вывести строку "</script>"
Я повторю, трудно чтоли
alert("</scr" + "ipt>");
Ответить с цитированием
  #10 (permalink)  
Старый 24.04.2009, 16:10
Dicot
 
Сообщений: n/a

<!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>
- это прокатывает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отменить поведение по умолчанию bool Общие вопросы Javascript 3 06.03.2009 16:59
Непонятное поведение javascript Autosof Общие вопросы Javascript 4 04.09.2008 19:00