Странное поведение браузеров
Здравствуйте.
Написал вот такую страничку и обнаружил, что браузеры (пробовал 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, время: 21:38. |