【发布时间】:2011-09-06 16:00:46
【问题描述】:
我正在寻找一个 DOM 事件,我可以使用 JavaScript 来监听一个已打开的选择元素(但未更改选项),然后通过单击选择元素,在其他地方(任何地方)关闭选择元素页面。
这不是选择的blur 事件,因为选择保留焦点。同样,它不是某个其他元素或文档的focus 事件,也不是窗口、文档或正文上的mousedown 或click。
这不是 select 的 change 事件,因为 select 中的任何选项都没有更改。
我不关心旧的 Internet Explorer - 只是在符合标准的现代浏览器中工作的东西。不过,专有的 hack 可能值得了解。
我创建了一个 JSFiddle 来演示这个问题:http://jsfiddle.net/premasagar/FpfnM/
- 点击“结果”面板中的选择框
- 单击标记为“此处”的文本(或其他任何位置),然后查看是否有任何事件添加到日志中。最新的 Chrome 或 Firefox 中没有事件。
所以问题是:可以添加什么 JavaScript,以便在单击选择框时记录事件?
(我在这里问了一个类似但不同的问题:
JavaScript on iOS: opening an HTML select element)
【问题讨论】:
-
如果您解释了为什么要这样做,它可能会有所帮助。
-
... 因为对您的问题的直接、简单的回答是“不”。 :-)
-
原因在对另一个问题的评论中:stackoverflow.com/questions/6097240/… 但这是一个令人费解的原因。简而言之,我只是想在选择元素更改时获取一些有关选择元素状态的编程信息。如果不可能,我真的很好奇为什么不(?)
-
通过阅读其他问题,在我看来,您只需要实现自己的小部件,它或多或少就像
<select>。 -
还不错,虽然感觉很奇怪。我对选择元素的行为研究得越多,就越觉得它们是一个像 Flash embed 一样的黑盒子。没有办法以编程方式打开它们,没有办法检查它们是否打开,也没有办法跟踪它们关闭的事件。随着 HTML5 等 Web 应用程序的成熟,对 DOM 中的组件的控制比以往任何时候都更加强大,但不起眼的选择似乎在很大程度上无法编写脚本。
标签: javascript jquery html dom