Логические атрибуты объясняются здесь:
http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2
Некоторые атрибуты играют роль логических переменных (например, выбранный атрибут для элемента OPTION).Их появление в начальном теге элемента означает, что значение атрибута равно «true».Их отсутствие подразумевает значение «false».
Логические атрибуты могут по закону принимать одно значение: имя самого атрибута (например, selected = "selected").
Таким образом, хотя некоторые браузеры могут интерпретировать строку «false», как если бы это значение не было установлено, другие могут не принять решение (что является правильным поведением).На самом деле, насколько я знаю (или думал ), любая непустая строка обычно устанавливает значение on / true (независимо от того, что в спецификации указано как допустимое значение).Я считаю, что это также неопределенное поведение, поэтому оно может меняться или отличаться от браузера к браузеру (не полагайтесь на него).
Суть в том, что один или два браузера могут отличаться отспецификация не означает, что вы должны.Полное удаление атрибута - это путь.
Приложение : Глядя на ваши комментарии и вопрос немного ближе, я думаю, вы можете быть смущены значениями атрибутов в целом.В HTML attr=false
и attr="false"
абсолютно одинаковы.Кавычки не требуются в любой версии HTML (если они не нужны для устранения неоднозначности, когда значение содержит пробелы).Например:
<input class=required>
<!-- This is fine -->
<input class=title required>
<!-- this is fine too, but "required" will be parsed as an attribute -->
<input class="title required">
<!-- To have two classes, we need the quotes -->
Все значения атрибутов (для элементов, которые их имеют) обрабатываются как строки.Другими словами, в HTML нет такой вещи, как истинное логическое значение (или NULL
значение), как в javascript.