【问题标题】:Why does Disabled = ture for html work?为什么 Disabled = ture 为 html 工作?
【发布时间】:2009-10-13 06:29:34
【问题描述】:

我注意到在我们的代码中有一个disabled = ture' 我是锚标记的源代码。我想知道为什么它在 IE 中有效。我还搜索了互联网,并且通过在网上搜索它也被用于很多源代码。我一直在寻找如果真的,错误的拼写也可以被IE使用。

有人知道吗?

【问题讨论】:

  • 哈哈。好吧,它们允许各种格式错误的 HTML 和不匹配的标签……为什么不允许语法错误呢? :p 我猜除了“假”之外的任何东西都会评估为真......或类似的东西。
  • 不, 也被禁用了:-P
  • KLE。我注意到您将 ture 的拼写更改为 true。实际上,在我们的代码中确实是 {disabled=ture'} 。即使是错误的拼写也被接受,它甚至不是真的。我猜浏览器会接受任何值。 :)

标签: html internet-explorer boolean


【解决方案1】:

以前禁用一个元素,你只是做了<input type="text" disabled>,所以大多数浏览器并不真正关心该属性中的内容。我相信让disabled="disabled" 成为标准只是为了让代码成为有效的 XML。

【讨论】:

【解决方案2】:

IE 只检查 disabled 属性是否存在。它的价值并不重要。

【讨论】:

    【解决方案3】:

    如果您使用“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-Compatiblecontent="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 中计算为假值,但在上述示例的上下文中不会转换为假值(因此是启用的小部件)。

    【讨论】:

      【解决方案4】:

      disable 属性可以取一个值:'disabled'

      HTML 中此属性的所有实例都允许省略引号、分隔符和名称(只留下未加引号的值)。

      由于浏览器实现标签汤解析器并执行大量错误恢复,禁用=几乎所有内容都将被视为disabled

      (我猜微软出于某种原因在锚点上实现了禁用,尽管该元素的属性不存在)。

      【讨论】:

        【解决方案5】:

        IE 因允许错误填充的 HTML 代码工作而臭名昭著;这就是为什么很多人错误地将问题“归咎于”它,但实际上只是他们做错了。

        我相信 IE 允许将 diabled 设置为任何值(除了 false)来表示它是真的,因为我认为过去人们写过 disabled='disabled' 和其他类似的东西。

        【讨论】:

          【解决方案6】:

          如果您想根据用户级别禁用它,您可以使用此代码 将其插入输入表单标签中希望有所帮助

          <?php 
          if($_SESSION['user_level']=="level1")
          {
          ?>  
          
          disabled="disabled"  
          
          <?php 
          }
          ?>
          

          【讨论】:

            猜你喜欢
            • 2011-09-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-30
            • 1970-01-01
            • 2022-12-16
            • 2010-12-23
            • 2013-08-16
            相关资源
            最近更新 更多