Javascript 进入全屏模式时如何识别真实的鼠标移动

Javascript 进入全屏模式时如何识别真实的鼠标移动,javascript,jquery,html,mouseevent,fullscreen,Javascript,Jquery,Html,Mouseevent,Fullscreen,我的问题是,我需要知道用户在进入全屏时是否真的移动了鼠标,或者这只是进入全屏的编程副作用 因为,当进入全屏时,鼠标Y坐标会自动更改,因为鼠标在绝对屏幕位置向上移动(因为浏览器的顶部导航消失)。由于每个浏览器都会在全屏模式下发出通知,所以这个通知会触发mousemove事件 因此,这让我们很难确定用户是否准确地移动了鼠标 是否有一种解决方案可以识别真实的鼠标移动? 到目前为止我都试过了 我已经尝试过使用类似于window.screen.top的东西来相对化鼠标位置,但这似乎还没有被任何浏览

我的问题是,我需要知道用户在进入全屏时是否真的移动了鼠标,或者这只是进入全屏的编程副作用

因为,当进入全屏时,鼠标Y坐标会自动更改,因为鼠标在绝对屏幕位置向上移动(因为浏览器的顶部导航消失)。由于每个浏览器都会在全屏模式下发出通知,所以这个通知会触发mousemove事件

因此,这让我们很难确定用户是否准确地移动了鼠标

是否有一种解决方案可以识别真实的鼠标移动?




到目前为止我都试过了
我已经尝试过使用类似于
window.screen.top的东西来相对化鼠标位置,但这似乎还没有被任何浏览器实现。

我认为还没有任何正式实现来检测全屏。有一个
fullscreenschange
作为的一部分,但它仍然是实验性的,需要特定于供应商的前缀

因此,基本上,您必须使用一些技巧来绕过这个限制,比如交叉
resize
事件,并跳过在
mousemove
上运行的任何逻辑。这里有一个例子

var resizing = false;

$(document).on('mousemove', function(event){
    if(resizing == false){
    $('p').text(event.pageX + ':' + event.pageY);
        console.log("moving");
    }
});

$(window).resize(function(){
    resizing = true;

    setTimeout(function(){
        resizing = false;
    }, 4000);
});

如果跳过调整
onmousemove
逻辑的大小,此示例仅定义一个标志,用于确定窗口是否正在调整大小。特别是我不喜欢使用带有任意时间的
setTimeout
来关闭
调整大小
标志,但是如果您的要求不那么严格,它可以完美地完成工作

为什么不在忽略所有鼠标输入的情况下加入延迟(例如0.5秒)。延迟后,任何鼠标移动都可能来自用户…

我现在通过保存鼠标坐标来解决这个问题,并检查它们是否发生变化-同时我在全屏后强制执行一个mousemove事件,以便更新坐标一次

$(document).on('mousemove', function(event){
    if(event.pageX == $(this).data('mouseX') && event.pageY == $(this).data('mouseY'))
         return;
    $(this)
        .data('mouseX',  event.pageX)
        .data('mouseY',  event.pageY)
    ;
});
$(document).mousemove();

没有办法,当用户点击F11时会触发mousemove事件。好的,我用jQuery插件覆盖了全屏部分。但是,延迟太长,因为我在1秒后隐藏了导航元素,并且全屏消息需要更长的时间。所以它出现,消失,又出现,又消失,这是令人不安的。
$(document).on('mousemove', function(event){
    if(event.pageX == $(this).data('mouseX') && event.pageY == $(this).data('mouseY'))
         return;
    $(this)
        .data('mouseX',  event.pageX)
        .data('mouseY',  event.pageY)
    ;
});
$(document).mousemove();