Если вы используете фреймворк, такой как "dojo", для визуализации ваших графических виджетов, значение этой разметки HMTL может влиять на то, как ваши компоненты отрисовываются (и отличается для старых браузеров IE). Dojo обращает внимание на значение объекта DOM, представляющего отключенный атрибут. Например, эта разметка будет отображать включенный виджет, если вы используете Chrome или> = IE9:
disabled="false"
Это противоположно поведению ванильных HTML-компонентов, которые будут отключены только потому, что присутствует атрибут disabled (согласно сообщению Зеда).
В Chrome и IE9 / более поздних версиях отключенное значение атрибута точно сохраняется в объекте DOM, который его представляет (например, если атрибут отсутствует в разметке, атрибут даже не определен в объекте DOM). Поскольку объект DOM управляет dojo, когда он отображает свои виджеты, значение в разметке HTML окажет влияние.
В IE8 / ранее значение атрибута сохраняется в DOM по-другому. Во-первых, атрибут disabled всегда присутствует, а во-вторых, только его отсутствие обеспечивает значение false (в этом случае виджет dojo будет отображаться включенным).
Примечание: современные браузеры IE можно отключить, чтобы уменьшить их поведение до более старых версий (например, метатег X-UA-Compatible
с content="IE=8"
).
Пример 1 ванильная HTML-разметка
Согласно сообщению Зеда, должен быть включен только первый из них (в любом браузере):
<button>OK</button>
<button disabled>OK</button>
<button disabled="false">OK</button>
<button disabled="true">OK</button>
<button disabled="mickey">OK</button>
<button disabled="">OK</button>
Пример 2 dojo html разметка
Первый и третий из них включены с помощью dojo (в Chrome / IE9 или более поздней версии):
<button dojoType="dijit.form.Button">OK</button>
<button dojoType="dijit.form.Button" disabled>OK</button>
<button dojoType="dijit.form.Button" disabled="false">OK</button>
<button dojoType="dijit.form.Button" disabled="true">OK</button>
<button dojoType="dijit.form.Button" disabled="mickey">OK</button>
<button dojoType="dijit.form.Button" disabled="">OK</button>
В IE8 или ниже приведенное выше будет отображаться точно так же, как в первом примере.
Странно "" оценивает ложное значение в JavaScript, но не переводит в ложное значение в контексте вышеупомянутых примеров (и, следовательно, включенного виджета).