无需用户移动鼠标即可使浏览器光标从"等待"变为"自动"

Nos*_*dna 67 jquery cursor busy-cursor mouse-pointer hourglass

我使用这个jQuery代码在Ajax调用期间将鼠标指针设置为忙状态(沙漏)...

$('body').css('cursor', 'wait');
Run Code Online (Sandbox Code Playgroud)

和相应的代码将其恢复正常...

$('body').css('cursor', 'auto');
Run Code Online (Sandbox Code Playgroud)

这在某些浏览器上工作得很好.

在Firefox和IE上,只要执行命令,鼠标光标就会改变.这是我想要的行为.

在Chrome和Safari上,鼠标光标在用户移动指针之前不会从"忙"变为"自动".

让不情愿的浏览器切换鼠标指针的最佳方法是什么?

Kor*_*yem 38

我宁愿这样做更优雅:

$(function(){  
  $("html").bind("ajaxStart", function(){  
     $(this).addClass('busy');  
   }).bind("ajaxStop", function(){  
     $(this).removeClass('busy');  
   });  
});
Run Code Online (Sandbox Code Playgroud)

CSS:

html.busy, html.busy * {  
  cursor: wait !important;  
}  
Run Code Online (Sandbox Code Playgroud)

资料来源:http://postpostmodern.com/instructional/global-ajax-cursor-change/

  • 这实际上并没有回答这个问题.如果不移动鼠标,则在删除类时光标不会更改回自动. (14认同)
  • Korayem - +1.干净的方法.我把它作为我拼凑在一起的一个相当混乱的实现的替代品.谢谢!!;-) (2认同)
  • 对于我的用例,我不得不将此逻辑放入1毫秒的setTimeout中以使其生效 (2认同)

小智 36

目前这是两个浏览器中的一个错误.两个链接的更多细节(也在评论中):

http://code.google.com/p/chromium/issues/detail?id=26723

http://code.google.com/p/chromium/issues/detail?id=20717

  • 对于现在遇到这种情况的人来说,虽然这个错误在2013年明显得到了解决,但仍有时会发生开放式工具的开放(参见2016年12月对铬虫26723的评论).所以,像你的用户一样关闭开发工具,然后一切都很好:) (9认同)
  • 仍然发生在2017/08/20 chrome 60,有或没有dev工具打开 (3认同)
  • Bug在2009年报道,仍然未经证实.伤心. (2认同)
  • 登陆webkit feb 2013 (2认同)
  • 谢谢你的链接.第一个链接有一些有用的评论,包括#87(https://code.google.com/p/chromium/issues/detail?id=26723#c87),这是我现在使用的解决方法 (2认同)

J. *_*len 21

我相信这个问题(包括mousedown问题)现在已在Chrome 50中修复.

但只有你没有使用开发者工具!

关闭工具,光标应立即响应更好.

  • 哈,不会想到收盘开发工具.谢谢! (3认同)

Ser*_*giu 7

我从Korayem解决方案中获得灵感.

使用Javascript:

jQuery.ajaxSetup({
    beforeSend: function() {
       $('body').addClass('busy');
    },
    complete: function() {
       $('body').removeClass('busy');
    }
});
Run Code Online (Sandbox Code Playgroud)

CSS:

.busy * {
    cursor: wait !important;
}
Run Code Online (Sandbox Code Playgroud)

在Chrome,Firefox和IE 10上测试.光标更改而无需移动鼠标.IE10需要"!important".

编辑:在AJAX请求完成后,您仍然必须在IE 10上移动光标(因此会出现正常光标).等待光标出现而不移动鼠标..