我的网络应用程序有使用按住空格键的键盘快捷键。问题在于当按住空格键时,鼠标指针会消失。我认为这是因为浏览器正在尝试向下滚动(即使在我的情况下没有任何要向下滚动的内容)。如果用户在按住空格键的同时移动鼠标指针,则鼠标指针会闪现出现,但一旦鼠标停止移动,它就会再次消失。一旦用户松开空格键,鼠标指针就会保持隐藏状态,直到鼠标再次移动,之后鼠标指针就会保持可见状态。这在Chrome、Safari和Opera(webkit/blink)中都会出现。
除了很多其他的尝试之外,我已经尝试了在事件上使用
注意:我的应用程序始终完全覆盖视口的100%。从未有任何滚动的必要,这就是我对覆盖惯例感到满意的原因。
非常感谢任何帮助。
除了很多其他的尝试之外,我已经尝试了在事件上使用
preventDefault()
的通用解决方案,但无论我在哪里监听它,它都不起作用。很明显,这是可能的,因为我以前使用过某些应用程序,它们使用空格键来执行与向下滚动无关的操作。var html = document.documentElement;
var body = document.getElementsByTagName('body')[0];
document.addEventListener("keydown", function(e) {
console.log("document keydown");
e.preventDefault();
e.stopPropagation();
});
window.addEventListener("keydown", function(e) {
console.log("window keydown");
e.preventDefault();
e.stopPropagation();
});
html.addEventListener("keydown", function(e) {
console.log("html keydown");
e.preventDefault();
e.stopPropagation();
});
body.addEventListener("keydown", function(e) {
console.log("body keydown");
e.preventDefault();
e.stopPropagation();
});
document.addEventListener("keypress", function(e) {
console.log("document keypress");
e.preventDefault();
e.stopPropagation();
});
window.addEventListener("keypress", function(e) {
console.log("window keypress");
e.preventDefault();
e.stopPropagation();
});
html.addEventListener("keypress", function(e) {
console.log("html keypress");
e.preventDefault();
e.stopPropagation();
});
body.addEventListener("keypress", function(e) {
console.log("body keypress");
e.preventDefault();
e.stopPropagation();
});
注意:我的应用程序始终完全覆盖视口的100%。从未有任何滚动的必要,这就是我对覆盖惯例感到满意的原因。
非常感谢任何帮助。