试图了解<select>元素上的点击事件

phi*_*ilo 6 javascript dom cross-browser

当在select元素上注册click事件处理程序时,我发现跨浏览器的行为非常不一致.我设置了一个jsfiddle演示.这是我看到的:

  • OS X上的Firefox 12(10.7 Lion):单击元素时会触发事件.下拉菜单暂时打开,不会保持打开状态.键盘操作不会生成单击操作.
  • Linux上的Firefox 12(Ubuntu Lucid):同样的
  • OS X上的Chome 19:没有鼠标或键盘交互触发click事件.
  • Linux上的Chrome 19:首先单击鼠标选项,然后单击仍然存在的选项或选项,触发单击事件.
  • OS X上的Safari 5.1.6:与Linux上的Chrome类似,首先点击展开选项,然后点击选项触发点击事件(与Chrome不同,Safari会在显示选项时隐藏选择元素).
  • Android浏览器(在冰淇淋三明治上):初始点击触发事件.事件后选项保持可见,可以单击.单击选项不会触发另一个事件.
  • 适用于Android的Chrome测试版(冰淇淋三明治):与Android浏览器相同.

如果有人能告诉我或指出我的标准,我会很高兴,但我想这并不是那么有用,因为我直接观察到没有人跟随它.我怀疑的是,这是一个不常见的尝试,也许更常见的是听取改变事件.真的吗?听点击选项怎么样?我无法让它工作,但它可能是一个愚蠢的错误.

(为了给出更多的上下文,我正在替换基于Google Closure构建的select元素,goog.ui.Select因为该组件很好地模仿了一些桌面select渲染,尤其是Chrome,但无法对移动浏览器上看到的扩展选项进行全屏渲染并且该应用程序之前已经收听了该组件的goog.ui.Component.EventType.ACTION事件,该事件在任何地方都没有明确的模拟,所以我只是想找到一致的替代品.)

lea*_*nne 0

这是 HTML Living Standard,最后更新日期为 2013 年 7 月 12 日(访问日期为 2013 年 7 月 14 日)。此链接将您直接带到 SELECT 元素。在其他领域,它表示任何 HTMLElement 都应该能够处理 onclick 事件,并给出了使用 javascript 添加侦听器的示例。当然,问题实际上是哪些浏览器可靠地支持指定的标准......

HTML标准