- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的 Web 应用程序具有涉及按住空格键的键盘快捷键。问题是按住空格键时鼠标光标消失。我认为正在发生的事情是浏览器试图向下滚动(即使在我的情况下从来没有任何东西可以向下滚动)。如果用户在按住空格键的同时移动鼠标光标,光标会闪烁到 View 中,只有在鼠标停止移动时才会再次消失。一旦用户释放空格键,鼠标光标将保持隐藏状态,直到再次移动鼠标,之后光标保持可见。这发生在 Chrome、Safari、Opera (webkit/blink) 中。
在很多事情中,我已经尝试过对事件使用 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();
});
注意:我的应用始终恰好是视口(viewport)的 100%。从来没有任何理由滚动,这就是为什么我对覆盖约定的想法很满意。
非常感谢任何帮助。
最佳答案
TL/DR:在 document.body 上应用 overflow: hidden
样式。
我刚刚在遇到同样的问题后在这里发现了这个 Unresolved (!!) 问题,但在 5 分钟内找到了我的解决方案。
多年没有答案,所以我也将解释我自己的情况,因为它一定是一个罕见的上下文。
我的场景:使用 PIXI 以及叠加的 HTML DOM 元素开发整页图形应用程序。在 MacBook Pro 上使用 Safari。
兴趣:按空格键与 PIXI 内容互动
方法:通过keydown 和keyup 监听器使用状态跟踪变量。当事件目标是 document.body 时,按下空格键,在 keydown 中更新 cursor
样式。同样在 keyup 中恢复 cursor
样式。
问题:浏览器想要滚动。即使在使用 event.preventDefault
时也是如此。
我从不使用空格键来滚动页面,所以我对现有的浏览器行为完全视而不见。
发现:在其他页面上进行实验,包括在 SO 问题上,我发现光标在页面底部按下空格键时不再隐藏。所以我知道浏览器正在考虑主体长度......
解决方案:在 document.body 上应用 overflow: hidden
样式。
现在我知道对于各种应用程序这可能不够,但它确实为我解决了这个问题。浏览器知道 body 上有零溢出处理,所以空格键对于滚动是惰性的。
应用此后,其他地方的溢出仍然有效:网络应用程序的其他 div 仍然可以滚动,并具有指定的尺寸。
关于javascript - 按住空格键会导致鼠标光标消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306244/
我在tinyMCE中遇到了一个奇怪的问题,即我无法在完整框架之外进行复制。整个问题仅在FireFox中运行,因为它仅支持FF,因此问题仅限于FF。 我使用AJAX调用来动态加载tinyMCE的一个或多
我的 JS 在这里: $('input[type=submit]').click(function () { var val = $('#message_content').scedito
我需要一些关于如何解决我的问题的想法。我有以下带有表格的 html 模板。它显示 5 行,在每行的末尾(在最后一个 td 中)有一个按钮触发 Bootstrap 模式(弹出窗口)。我正在使用空格键 {
我有以下代码: ...... 如何在空格键模板的 if 条件中使用 AND/OR ? 最佳答案 空格键无法处理逻辑表达式,因此您需要创建一个帮助程序来处理计算。 其实你可以实现and具有嵌套 if
我正在用 JavaScript 编写代码,目标是 Chrome。 现在,考虑以下情况: 我在网页上按空格/退格键 vs 我在文本框上按空格键/退格键 通过使用 (goog.events.listen
我在实现 RoutedUICommand 的 RoutedCommand 类中处理命令。如果需要,这将帮助我通过检查他们的 CanExecute 和 Execute 来阻止或覆盖命令。我可以覆盖 Ed
基本上,我想制作一个计算 10 秒内空格键按下/按钮点击次数的游戏。我制作了一个倒数计时器,两个计数器都工作正常 我找不到停止按键计数的方法(在计时器停止后),所以我使用了“禁用”按钮,但如果有更好的
我遇到了一个问题,selenium 无法按住不在此列表中的键 - Keys.SHIFT, Keys.CONTROL, Keys.ALT, Keys.META, Keys.COMMAND, Keys.L
我有一个集合,其值类似于 { "pctFail": "0.3515500159795462"} ,当我将其传递给模板并显示为 {{myTemplate}}% 时,它在我的 html 中显示为0.351
{{#each}} 中 {{#if}} 的这个简单示例产生了意想不到的(对我而言)结果: HTML: test {{> test yes=true}} template nam
我使用下面的代码创建一个带有对话的 MessageBox。默认情况下,yes 按钮具有焦点。如果我不小心按了空格键,对话框就会明白我选择了是。我只希望按下回车键触发事件。有没有办法禁止 Space 键
我愿意根据 Session 变量设置我的应用程序的 header 。 这是空格键模板: {{#if session 'header'}} {{#if session 'header_le
我的问题: ^space & c:: send {F2} send {Escape} 但它没有用,我如何模拟 Ctrl+Space + AlphabeticaklKey ? 最佳答案 正如我之前的演讲
我正在 Visual Studio 2008 中开发 MFC 应用程序。我有一个带有复选框的 CListCtrl 对象。我想知道是否有一种简单的方法可以让空格键切换所有突出显示的项目。现在,在按下空格
我有一个本地全屏 AIR 应用程序(从服务器加载多个 SWF),我正在尝试使用 ALT+作为捷径。 但 Windows 操作系统拦截了 ALT键,例如当我按下 ALT+Space 时显示左上角窗口菜单
我刚刚开始使用 Eclipse,我注意到当我开始输入本地变量名称时,它不会像 Visual Studio 那样提供建议,直到我按 Ctrl+Space 。有什么办法让它自动执行此操作吗?我发现 Ctr
Enter keyCode(13) 在所有浏览器上都能正常工作。 空格键 keyCode(32) 我在 Chrome 上测试工作正常但在 Firefox 上没有响应。我使用了以下代码: fu
我有一个 jQuery UI 对话框,其中有足够的内容来触发垂直滚动条的出现。我发现使其滚动的唯一方法是单击并拖动滚动条,或单击滚动条区域 - 即无法使用 PgUp 或 PgDn 键、箭头键或空格键使
当我使用 HTML5 contenteditable 时,空格键在 button 元素中不起作用。但它在 div 元素中运行完美。我怎样才能让它工作?有人可以帮助我吗? 请在这里查看:https://
我是一名优秀的程序员,十分优秀!