如果您使用“dojo”之类的框架来呈现您的 GUI 小部件,则此 HMTL 标记的值会影响您的组件呈现方式(并且对于较旧的 IE 浏览器有所不同)。 Dojo 关注表示 disabled 属性的 DOM 对象的值。例如,如果您使用的是 Chrome 或 >=IE9,则此标记将呈现启用的小部件:
disabled="false"
这与普通 HTML 组件的行为方式相反,后者纯粹因为存在 disabled 属性而被禁用(根据 Zed 的帖子)。
在 Chrome 和 IE9/更高版本中,disabled 属性值准确地保存到表示它的 DOM 对象中(例如,如果该属性不存在于标记中,则该属性甚至没有在 DOM 对象上定义)。由于 DOM 对象是 dojo 呈现其小部件时的驱动力,因此 HTML 标记中的值将产生影响。
在 IE8/更早版本中,属性的值以不同的方式保存到 DOM 中。首先 disabled 属性始终存在,其次只有它不存在才能确保值为 false(在这种情况下,dojo 小部件将显示为启用)。
注意:现代 IE 浏览器可以调节以将其行为回归到旧版本(例如元标记 X-UA-Compatible 和 content="IE=8")。
示例 1 普通 html 标记
根据 Zed 的帖子,应该只启用其中的第一个(在任何浏览器中):
<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 中计算为假值,但在上述示例的上下文中不会转换为假值(因此是启用的小部件)。