【发布时间】:2015-12-27 05:08:36
【问题描述】:
我有一个在 Ubuntu 服务器 14.04.3 和 chrome 上运行的自助服务终端应用程序。目前我有一些代码,如果 2 秒内没有移动,则隐藏鼠标,一旦用户尝试再次移动鼠标,它就会再次显示。诀窍是使用cursor:none 并添加叠加层:
js:
var body = $('body');
function hideMouse() {
body.addClass("hideMouse");
body.on('mousemove', function(){
if(window.hiding) return true;
window.hiding = true;
body.removeClass("hideMouse");
$('div.mouseHider').remove();
clearTimeout(window.hideMouse);
window.hideMouse = setTimeout(function(){
body.addClass("hideMouse");
$('<div class="mouseHider"></div>').css({
position: 'fixed',
top: 0,
left: 0,
height: '100%',
width: '100%',
zIndex: 99999
}).appendTo(body);
redraw(document.body);
setTimeout(function(){
window.hiding = false;
}, 100);
}, 4000);
});
}
function redraw(e) {
e.style.display = 'none';
e.offsetHeight;
e.style.display = 'block';
}
css:
body.hideMouse *, body.hideMouse{
cursor: none;
}
body.hideMouse *{
pointer-events: none !important;
}
此代码运行良好,但只有 1 个警告。当页面第一次加载时,它试图用同样的技巧隐藏鼠标,但鼠标仍然粘在那里,因为它只是没有重新绘制我猜的图层。如果我想让它工作,我必须稍微移动鼠标,然后它将按预期工作并隐藏鼠标。问题是信息亭应用程序每天都在重新启动,这意味着我再次启动 X 显示器,并且鼠标被重置到屏幕中间,并且它一直停留在那里,直到我稍微移动它。我希望你明白我的意思。
你们知道我该如何解决这个问题吗?
【问题讨论】:
-
您需要在应用程序加载但用户不移动鼠标时,光标应该在指定时间后隐藏对吗?
-
通常在定位光标时,您希望将其称为选择器:
selector { cursor: none; } -
你怎么称呼
hideMouse()? -
@A.J 没错。在这种情况下,鼠标图标只是停留在那里,就像网页还没有意识到鼠标一样
-
@Zealander 我忘了在这里添加,我在页面加载时调用了
hideMouse()方法。以太,我不确定你想说什么
标签: javascript jquery html css google-chrome