Странное поведение браузеров
Здравствуйте.
Написал вот такую страничку и обнаружил, что браузеры (пробовал 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>
|
Обычное поведение.
alert("</scr" + "ipt>");
|
начнем с того, что если вы используете XHTML, то вы обязаны оборачивать код JS-а в блок CDATA
|
Если Вы имеете в виду doctype, так его можно убрать - будет то же самое
|
Цитата:
Цитата:
|
Dicot а что валидатор говорит? http://validator.w3.org/
|
Цитата:
|
Седня первый раз поразвлекался с валидатором - забавная весчь :)
<!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>" :) |
Цитата:
alert("</scr" + "ipt>");
|
<!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, время: 05:20. |