【问题标题】:Get mouse position when focus/blur events are fired?触发焦点/模糊事件时获取鼠标位置?
【发布时间】:2020-12-21 06:01:00
【问题描述】:

我正在使用 jQuery 来捕获事件:

$('input').focus(function(e){

    console.log( e.pageX, e.pageY );

});

这似乎不起作用...关于获取鼠标位置的替代方法的任何想法?


帮助会很大。

【问题讨论】:

  • 我认为您只能在使用鼠标的事件上获取鼠标坐标——单击、dblclick 等。如果用户通过 tab 键关注您的输入,那么获取鼠标坐标将毫无意义键盘。

标签: javascript html jquery mouse jquery-events


【解决方案1】:

您只能使用鼠标事件获取鼠标坐标。如果要捕获鼠标的位置,可以使用全局mousemove 事件监听器,并将坐标存储在一组变量中,以后可以通过focus 函数访问这些变量。示例:

var pageX, pageY; //Declare these globally
$(window).mousemove(function(e){
    pagex = e.pageX;
    pageY = e.pageY;
});

$('input').focus(function(){
    console.log(pageX, pageY); // These variables have been defined by the global
                               //  mousemove event
});

【讨论】:

  • 这是唯一的方法,afaik
  • 这里是指任何 [鼠标] 事件吗? “.pageX 和 .pageY 可以从任何事件中读取,而不仅仅是 .mousemove()。例如,也许您想知道用户在特定 div 中点击的确切位置:这是一个我们在内部监听点击事件的示例一个名为#special的特定div。” docs.jquery.com/Tutorials:Mouse_Position
  • @jbabey 单击是鼠标事件。 focus 不是鼠标事件。
  • @RobW 是的,我理解并同意你的看法——奇怪的是我上面链接的网站说“任何事件”而不是“任何鼠标事件”
  • @Andy 我本来也想使用xy。然后,我想“很可能 x 或 y 已经在函数中定义,导致冲突。”因此,我决定使用描述性但紧凑的pageXpageY 变量名。
【解决方案2】:

如果您尝试获取相对于元素的位置,请尝试以下操作:

$("input").focus(function(e){
    var relativeX = e.pageX - this.offsetLeft;
    var relativeY = e.pageY - this.offsetTop;
});

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多