【问题标题】:Prevent cursor from hiding in Browser after key is pressed按键后防止光标隐藏在浏览器中
【发布时间】:2013-10-01 09:32:37
【问题描述】:

我知道,在大多数浏览器(最新一代)中,当您键入“A”或空格等任何键时,鼠标光标会隐藏。这是为了让用户看到他输入的内容。 只要将鼠标移动一个像素,光标就会恢复可见。

现在问题来了——这在浏览器中随处可见,即使我将焦点集中在一个非输入元素(如 div 之类)时也是如此。但是,我确实不希望浏览器在用户按下某个键后隐藏我的光标,因为我将键用作快捷键。

所以问题是——有什么办法或技巧或任何东西来防止这种情况发生和/或让光标在按键后再次自动出现?

我在网络上尝试了各种“黑客”,比如不可见的 div 等,但一切都没有成功。

编辑:正如提问的那样,我在最新的 MAC-OS-X 上的每个浏览器(Chrome 最新版、Firefox 最新版、Safari 最新版)上都遇到了这种行为。

【问题讨论】:

  • Linux/Ubuntu 上的 Chrome 或 Firefox 不会发生这种情况。你确定你没有安装插件?还是启用了鼠标驱动程序的某个功能?
  • 我试图重现您描述的行为,但似乎对我不起作用。 Windows7 + 最新的 chrome 或最新的 Firefox。你能指定你使用的环境吗?
  • 已在 Mac OS X 10.8.4 上的 Chrome 中确认

标签: javascript html google-chrome firefox


【解决方案1】:

这不是浏览器行为,而是操作系统行为,尤其是 Mac 行为。光标不仅会在您在浏览器中键入时隐藏,而且在 Mac 上的任何应用程序中都会隐藏。

这意味着浏览器不知道或无法控制光标,因为它对更高级别是隐藏的。例如,您可以使用 CSS 或 JavaScript 更改光标,但在您移动它之前它仍然不会显示。您实际上无法使用 JavaScript 移动光标,但即使您可以,我仍然怀疑它是否有帮助,因为操作系统没有收到光标移动的信号。

也可以参考 apple.stackexchange.com 上的这个问题: How do I disable hiding of the mouse pointer while typing text?

【讨论】:

    【解决方案2】:

    我只是想到了一个可能的解决方案,但要以一种不惹恼用户的方式做到这一点真的很难:

    1. 每当光标移动时,保存它的位置
    2. 当文档观察到一个键位时,在最后一次看到实际光标的位置的确切坐标处显示光标图像(它仍然存在,但隐藏)
    3. 当实际光标再次移动时,隐藏图像(其实就是把这个功能和1合并)

    这里的问题是知道要显示什么光标图像。您首先必须检测用户是否在 Mac(或隐藏光标的其他操作系统)上,还要根据悬停的内容确定应该显示的光标。这意味着对于您悬停的每个元素,您还必须检测正在显示哪个光标并显示同一光标的图像。

    您可以通过添加一些涵盖链接和输入悬停的 CSS 规则(分别为pointertext)来涵盖基本/默认设置,但是如果用户使用在其操作系统中定义的自定义光标怎么办?

    我还没有尝试过任何代码,这只是一个理论上应该可行的概念,所以如果您需要更多帮助,请告诉我,但老实说,我建议不要尝试完成此操作。它带来的麻烦多于解决的问题,imo。

    -编辑- 这是概念证明:http://jsfiddle.net/4rKMx/2/

    【讨论】:

    • 我使用自定义光标。您的“解决方案”将如何处理?
    • 不是。这就是我在这个答案中明确说明的内容,这就是我不推荐它的原因。我只是想完整地指出,从技术上讲,这样做是有可能的(即使它不是一个完美的解决方案)
    • 这确实是个好主意!我真正遇到的唯一问题是我的光标是 *.cur 格式,因此无法使用图像直接渲染。
    • 如果您为您的网站自定义了光标,这会更好,因为每个人的屏幕上都有不同类型的光标。您还应该在移动设备上禁用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2013-08-06
    • 2017-08-22
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多