JavaScript确定单击事件的原因
假设一个DOM元素有焦点。如果用户按enter键,并且将触发JavaScript确定单击事件的原因,javascript,jquery,events,jquery-events,Javascript,Jquery,Events,Jquery Events,假设一个DOM元素有焦点。如果用户按enter键,并且将触发单击事件,是否有方法采取行动X,但如果元素是单击而不是按enter键,是否有方法采取行动Y --更多详细信息-- 我使用的是jQuery插件(),我无法控制它。该插件在DOM中的元素上注册click事件。现在,我想修改该行为,以便在触发已注册的click事件处理程序之前发生其他操作,具体取决于事件的启动方式 我提出了两种方法,都需要注册mouseup和keydown事件 在mouseup和keydown事件处理程序中设置全局变量以缓存事
单击
事件,是否有方法采取行动X,但如果元素是单击
而不是按enter键,是否有方法采取行动Y
--更多详细信息--
我使用的是jQuery插件(),我无法控制它。该插件在DOM中的元素上注册click
事件。现在,我想修改该行为,以便在触发已注册的click
事件处理程序之前发生其他操作,具体取决于事件的启动方式
我提出了两种方法,都需要注册mouseup
和keydown
事件
mouseup
和keydown
事件处理程序中设置全局变量以缓存事件属性,然后在单击
处理程序中访问此全局变量。由于无法保证是什么触发了click
处理程序,因此我必须设置一个超时来清除这个全局变量。这将引入线程问题单击
事件的事件。根据经验,当e.type='mouseup'&&e.button==0
或e.type='keydown'&&(e.keyCode==13 | e.keyCode==32)
时会发生这种情况。此逻辑的问题在于,它假定这些是触发click
事件处理程序的唯一方式。我可以想象一些用户代理能够更改最终向底层对象发送单击事件的键。当点击DOM元素时,触摸屏可能会触发一些其他事件
mouseup
/keydown
事件是导致单击事件的唯一事件单击
处理程序,并从新的鼠标上手动调用它们
/按键
事件处理程序点击
事件发生的事件(例如,以某种方式访问启动事件的keyCode
/按钮
属性)对于您的方法#2,您同时使用了
mouseup
和keydown
事件侦听器,对吗?这意味着什么:我可以想象一些用户代理能够更改最终向底层对象发送点击事件的按键?你的意思是:触摸屏可能在[触摸/点击]时触发其他事件关于DOM元素?我试图了解的是,似乎无法知道哪些事件可能最终导致触发单击事件。我可以将Firefox配置为在某个元素具有焦点且我按下“P”键时触发单击事件吗?还有其他允许这种配置的浏览器吗?我怎么知道enter、space和左键单击(我在这里用left表示主要的鼠标按钮)是触发单击事件的唯一方法?触发点击
事件的要求是否已在任何地方定义?对于您的方法#2,您同时使用鼠标
和按键
事件侦听器,对吗?这意味着什么:我可以想象一些用户代理能够更改最终向底层对象发送点击事件的按键?你的意思是:触摸屏可能在[触摸/点击]时触发其他事件关于DOM元素?我试图了解的是,似乎无法知道哪些事件可能最终导致触发单击事件。我可以将Firefox配置为在某个元素具有焦点且我按下“P”键时触发单击事件吗?还有其他允许这种配置的浏览器吗?我怎么知道enter、space和左键单击(我在这里用left表示主要的鼠标按钮)是触发单击事件的唯一方法?触发点击
事件的要求是否在任何地方实际定义?