如何通过鼠标点击,键盘或JavaScript功能找到HTML-Element(假设select
- 标签)??
<select onfocus="foo(event)"></select>
<script>
function foo(e) {
if (e.??? == 'mouse') {
//do something
}
else if (e.??? == 'keyboard') {
//do something different
}
}
</script>
我还尝试向元素添加onclick
事件,但onfocus
事件首先触发。
答案 0 :(得分:1)
使用document.activeElement,所有主流浏览器都支持它。它可以为您提供当前的活动元素。
修改强>
哎呀我想我误解了你的问题。你想识别鼠标或键盘或程序化
对于程序化 if(e.hasOwnProperty('originalEvent')){ //手动触发焦点事件。 }
区分基于键盘和鼠标的焦点事件 你必须通过添加一个额外的keydown事件来破解它并理解。你不能像你想要的那样区分它。
答案 1 :(得分:1)
我不相信有任何原生方式可以看到元素如何得到它的焦点(如果我错了,请纠正我的错误!)。
但是,您可以在单击鼠标时执行存储操作,在使用键盘时存储,然后根据上一个活动状态做出反应。
var inputState = null;
document.addEventListener("click", handleClick);
document.addEventListener("keyup", handleKey);
function handleClick () {
inputState = "mouse";
}
function handleKey () {
inputState = "keyboard";
}
function foo() {
if ( inputState === "mouse" ) {
// mouse code
} else if ( inputState === "keyboard" ) {
// keyboard code
} else {
// Function was called directly
}
// Reset input State after processing
inputState = null
}
这可能需要一些调整,但我希望你能用它来找到正确的答案。
编辑:
我的回答是一个普通的JS解决方案,如果您有权访问jQuery,您可能需要调查click
和keyup
事件处理程序。
答案 2 :(得分:0)
如果你想检查天气&lt;选择&gt;用键盘或鼠标点击, 你可以使用mousedown()和keypress()事件
$('select').mousedown(function(e){
//your code on mouse select
});
和
$('select').keypress(function(e){
//your code on key select
});