【问题标题】:How do different browsers handle multiple selected options不同的浏览器如何处理多个选中的选项
【发布时间】:2017-05-18 19:23:13
【问题描述】:

不同的浏览器如何在以下情况下处理多个选定的选项,其中程序员错误地或不知不觉地在其 HTML 中选择了多个默认选项:

   <select>
        <option selected="selected"> Option 1</option>
        <option>Option 2</option>
        <option>Option 3</option>
        <option selected="selected">Option 4</option>
        <option>Option 5</option>
        <option>Option 6</option>
    </select>

目前我可以访问chrome、firefox、opera和safari,他们似乎都一致选择@​​987654324@,可能是因为浏览器从上到下加载。尽管如此,安全总比后悔好。在我们都喜欢讨厌的浏览器中,即 IE(没有双关语)或 Microsoft Edge,它们有什么不同吗?

【问题讨论】:

  • “用户在其 HTML 中错误地或不知不觉地选择了多个默认选项”是什么意思?你能不应用验证来提醒用户他们犯了错误吗?
  • 还有规范dictates:“未指定多个属性的选择元素不得有多个后代选项元素及其选定属性集”。这完全取决于浏览器供应商来实现如何处理(这意味着在同一浏览器的版本之间,这实际上可能会在没有警告的情况下发生变化,更不用说不同的浏览器了)。
  • 我会在几秒钟内澄清这一点。我的问题不是关于网站用户,而是关于 HTML 语言的用户 :-)
  • user of the HTML language - 或“作者”?
  • @JamesDonnelly - “这完全取决于浏览器供应商来实现如何处理”。不,这不对。如何处理案件在w3c.github.io/html/sec-forms.html#ask-for-a-reset的html5规范中指定,它将选项添加到DOM中,树顺序中的最后一个选项将保留,因为所选的一个和任何其他选项将取消选择,完全匹配问题中确定的行为。

标签: javascript html select option


【解决方案1】:

根据Browserling,它在IE 9中显示相同的结果,我也在我的PC上进行了测试。 Microsoft Edge 也显示了相同的结果。我认为每个浏览器都以自己的方式解释这一点。根据 W3 规范:

未指定多个属性的 select 元素不能有多个后代 option 元素及其 selected 属性集。

如果您想更详细地了解这一点,请将您提供的代码放在 JSFiddle 上,然后尝试BrowserlingBrowsershots 中的链接。

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多