如下所示的某些代码通过 Enter 键触发click
事件,但没有响应鼠标单击。
//a is an anchor element
a.addEventListener('click', function (e)
{
//Do Stuff...
});
This page演示了这个问题。相关的代码位于第176行。这正处于开发阶段,目前只有(有点)适用于 Chrome 。
此外,我刚刚验证了它是否有效,如果我使用mousedown
,所以不仅仅是一个不可见元素位于锚点前面。
有什么想法吗?
答案 0 :(得分:1)
编辑:现在您已经向我们展示了您正在使用的实际代码,问题与autoSuggest()
函数具有自己的单击处理程序这一事实有关,并且在该单击处理程序中,它正在清除容器,它删除容器中的所有<a>
元素,以便链接对象被销毁(可能在您的click事件开始处理之前)。因此,您可以获取在单击之前发生的事件(如mousedown),但在单击之后,该元素将从DOM中删除。
如果您告诉我们在单击自动建议项目时您尝试实际执行的操作与autoSuggest()
函数的默认行为不同,并且您指向该函数的任何文档,那么也许我们可以提供更好的方法来解决您的问题。
链接可能会触发并将您带到新页面(或重新加载当前页面),从而阻止您看到点击代码运行。通常,当您在link元素上处理click事件时,您需要阻止默认行为:
//a is an anchor element
a.addEventListener('click', function (e) {
e.preventDefault();
//Do Stuff...
});
另一种可能性是,您尝试在加载DOM之前或创建此特定链接之前过早安装事件处理程序,因此没有实际的单击事件处理程序附加到DOM对象。您可以通过在事件处理程序中临时放置alert("Click handler called");
并查看是否弹出来验证事件处理程序是否被调用。