2010-10-10 158 views
4

在Firefox和Chrome中的Mac OS/X上,键入时鼠标光标会消失。无论如何,在javascript中防止这种行为或强制光标再次变为可见?如何在打字时在浏览器中显示鼠标光标?

我使用jQuery的键盘处理:

// keyboard handlers 
    $(document).keydown(this.keydown); 
    $(document).keyup(this.keyup); 

...

keydown: function(evt) { 
    var app = PGE_LIB.game(); 
    switch(evt.which) { 
    case 'G'.charCodeAt(0): 
    app.activateGrabTool(); 
    break; 
    case 'S'.charCodeAt(0): 
    $('#toolbar img').removeClass('activeTool'); 
    $('#scaleTool').addClass('activeTool'); 
    break; 
    case app.ESC_KEY: 
    app.deactivateTool(); 
    break; 
    case app.SHIFT_KEY: 
    app._shiftKeyDown = true; break; 
    default: 
    break; 
    } 
}, 
+0

贵国是否能表现出一些代码如何:重新递目前这些键盘输入的事件?你是否阻止了默认操作? – 2010-10-10 01:26:08

+0

我不确定您的意思是防止默认操作。 – 2010-10-10 01:35:57

+0

值得注意的是,至少在Safari 5中,默认行为是让游标在击键后保持可见状态*除非*文本字段为焦点。我不知道原因是什么,但一些事件处理程序似乎覆盖了这种行为(所以您遇到的行为可以重现,例如Gmail没有关注文本字段,但不是堆栈溢出)。 – eyelidlessness 2010-10-10 02:00:52

回答

4

如果您使用自定义游标,当您的按键事件触发时,您可以检测到光标位置并在其位置显示图像,直到下一个mousemove。在这种情况下,您还应该隐藏未处理的按键事件的图像。如果您没有使用自定义游标,请注意您可能会向某些用户展示标准游标版本,而不是其操作系统或浏览器或用户安装的游标集显示。

+0

我现在在我的应用中使用自定义游标,这种方法完全解决了这个问题。 – 2010-10-10 14:00:29

5

这是预期在这些浏览器的行为。行为用户预计。幸运的是,没有办法禁用它。个人而言,我发现很多关于OS X的UI决定令人愤慨,但由于它是OS X的标准行为,所以改变这一点肯定会违背用户的期望。

编辑

我没有在时刻提供给我一个苹果,这样我就可以:t检验这一点,但看到http://api.jquery.com/event.preventDefault/

可以使用event.preventDefault()改变的默认行为一些元素。它并不总是有效,并且消失的鼠标光标问题是OS范围的行为,而不是浏览器特定的。

+5

那么,我很欣赏明确的答案,除了“谢天谢地”的部分。我正在开发一个图形设计的Web应用程序,它使用键盘输入在工具之间切换。所以我需要将鼠标光标从“指针”改为“移动”或“调整大小”。目前,光标在更换工具时会消失,这是不可接受的。目前Web浏览器的功能可以轻松开发各种酷炫的应用程序,除了这样的荒谬限制之外。 – 2010-10-10 01:10:28

+0

@William,对此术语的使用表示歉意。也许另一个可能是微妙的。我的观点是,浏览器制造商实际上已经更好地锁定了这些东西。那是我所感激的。您所描述的确听起来像是一个有趣且有用的应用程序。问题不在于“当我键入”时,而是如何捕获键盘输入并防止默认操作? – 2010-10-10 01:24:57

+0

问题是我有一些可能想要移动或调整大小的对象,以及一个用户界面约定,您可以在其中按'g'或's'键以“抓取”或“缩放”(就像Blender一样) )。目前,当我点击其中一个键时,鼠标光标消失,用户必须移动鼠标才能显示光标。这在Mac应用程序(例如Gimp)中不会发生,因此大概在低级别的方法中可以防止在Mac上输入时隐藏光标。但显然不在浏览器中。 – 2010-10-10 01:50:00

0

很抱歉,您无法通过浏览器禁用此内置操作系统功能。

screenshot

+1

我疯了还是这在Windows中完全不起作用?我不得不使用Windows进行较长时间的短期工作,它从未成功运行。 – eyelidlessness 2010-10-11 05:51:07

+0

@eye:虽然使用自定义光标和文本框的几个程序(如游戏)不起作用,但它始终适用于我。我使用Windows 7,有时使用Windows XP。 – Kranu 2010-10-11 23:22:21

相关问题