LINUX.ORG.RU

Валидатор ругается на <noscript>

 , , , ,


1

1

Знатоки семантической валидной вёрстки, а чем именно валидатору, разработанному укурышами высокопочтёнными господами из W3C, не понравился такой код?

<!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>
		<form action="" method="post">
			<h2>
				Прогноз погоды 
				<span style="white-space: nowrap;">
					в 
					<select name="city" onchange="this.form.submit();">
						<option value="1" selected>Кукуево</option>
						<option value="2">Мухосранске</option>
						<option value="3">Усть-Задрищенске</option>
					</select>
					<noscript><input type="submit" value="Выбрать"></noscript>
				</span>
			</h2>
		</form>
	</body>
</html>

Validation Output: 3 Errors 
Line 19, Column 15: document type does not allow element "NOSCRIPT" here; missing one of "OBJECT", "MAP", "BUTTON" start-tag
Line 19, Column 52: document type does not allow element "INPUT" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag
Line 19, Column 63: end tag for "NOSCRIPT" which is not finished
Как ни старался, но уловить глубинную суть выдвигаемых требований из сиих посланий я так и не смог.

★☆

Последнее исправление: h578b1bde (всего исправлений: 2)

Про noscript не понял, а про input… возможно стандарт предполагает что input может быть только внутри определённых элементов. Хотя и не понятно с чего-бы.
А если сменить доктайп на html (который <!DOCTYPE html>)? Думаю там меньше таких странных требований.

А вообще можно просто не запариваться валидацией, ограничиться проверкой в основных браузерах (FF, что-то на вебките, нужные версии IE).

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Про noscript не понял, а про input… возможно стандарт предполагает что input может быть только внутри определённых элементов. Хотя и не понятно с чего-бы.

Нет, если убрать теги <noscript> вокруг <input> то валидатор покажет зелёный свет, т.е. „проблема” именно в <noscript>.

А если сменить доктайп на html (который <!DOCTYPE html>)? Думаю там меньше таких странных требований.

Line 9, Column 32: Bad value for attribute action on element form: Must be non-empty.
<form action="" method="post">

Тоже так себе требование, да и смысла нет менять доктайп на уже работающем проекте.

А вообще можно просто не запариваться валидацией, ограничиться проверкой в основных браузерах (FF, что-то на вебките, нужные версии IE).

Я тоже считаю что лучший валидатор это браузер, просто интересна логика такого поведения валидатора. Подозреваю что это как-то связано с блочными/строчными элементами.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от h578b1bde

Тоже так себе требование

Хотя action в HTML5 уже вроде как необязателен, так что с выкидыванием этого атрибута можно засчитать преимущество.

h578b1bde ★☆
() автор топика

https://stackoverflow.com/questions/2982590/strict-doctype-form-and-input-element

<!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>
        <form action="" method="post">
            <h2>
                Прогноз погоды 
                <span style="white-space: nowrap;">
                    в 
                </span>
                <select name="city" onchange="this.form.submit();">
                    <option value="1" selected>Кукуево</option>
                    <option value="2">Мухосранске</option>
                    <option value="3">Усть-Задрищенске</option>
                </select>
            </h2>
            <noscript><div><input type="submit" value="Выбрать"></div></noscript>
        </form>
    </body>
</html>
ThePretender
()

Лениво лезть в спеки, но, видимо, несовместимое вложение. Скорее всего для noscript нужно целиком отдельный form делать.

KRoN73 ★★★★★
()
Ответ на: комментарий от ThePretender
 <!ENTITY % block
     "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

Зря я перечеркнул слово „укурышами” в ОП-посте. В моём браузере с выключенными скриптами поведение noscript аналогично поведению span, и зачем туда внезапно понадобилось совать div — непонятно.

                <span style="white-space: nowrap;">
                    в 
                </span>
Ну и зря. На скриншоте ширина окна браузера == ширине скриншота; у меня всё отображается как задумано, у тебя же всё разъехалось.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от h578b1bde

Возможно в примере первое псевдоназвание города с т.з. наглядности я выбрал не совсем удачно, если взглянуть на два других — наличие приставки „в” на одной строке с выпадающим списком выглядит вполне логично.

h578b1bde ★☆
() автор топика
Ответ на: А причем тут html5? от Jaberwock

А причем тут html5?

Ветку смотри — я отвечал товарищу, предлагавшему сменить доктайп.

h578b1bde ★☆
() автор топика
Ответ на: смотри от Jaberwock

<!ELEMENT NOSCRIPT - - (%block;)+

Таки я не понял — написано что блочный а на деле работает как строчный.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от n0044h

А это вообще нормально, совать форму в h2?

А почему бы и нет? Тот же валидатор без noscript говорит что всё нормально, браузеры согласны.

h578b1bde ★☆
() автор топика
Ответ на: комментарий от h578b1bde

Хотя нет, ты меня запутал. У меня же не форма в h2, а наоборот.

h578b1bde ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.