我通过jQuery进行了一系列的AJAX调用。当正在执行ajax调用时,没有可视指示。通常,如果您单击链接或其他一些非ajax加载,浏览器会在选项卡中显示一个小加载图标。
有没有办法告诉浏览器在标签中显示这个小图标? (这些电话大约有30个,所以我希望避免修改每个电话。)
答案 0 :(得分:10)
不,你不能告诉浏览器这样的事情。
但是你可以做自己的装载指示器。在标记中加入隐藏元素,然后使用ajaxStart
和ajaxStop
事件来控制其可见性:
$("#loading_animation").bind({
ajaxStart: function() { $(this).show(); },
ajaxStop: function() { $(this).hide(); }
});
当没有其他人正在运行ajax请求时,jQuery会触发 ajaxStart
;当ajax请求完成且没有其他人在运行时会触发ajaxStop
。
答案 1 :(得分:7)
没有
但你可以修改光标的css。
body {
cursor:wait;
}
答案 2 :(得分:3)
你绝对可以。请参阅此帖子:Changing website favicon dynamically
只需创建加载图形的动画图标,并在加载时将图标更改为该图标。
问题是您没有与特定浏览器使用的完全相同的加载图形,但我认为该信息将得到有效传达。
答案 3 :(得分:1)
在进入任何代码之前,我只想说这是一个丑陋的解决方案,但它确实对我有用。
我所做的是在网站上放置一个iframe。然后我用css中的 display:none 隐藏它。
然后在每个ajax调用中,我用新页面重新加载iframe。这会导致浏览器在标签栏中显示加载。
我知道这不是一个漂亮的解决方案,它有一些缺陷。如果iframe的加载速度比ajax快,则无法控制加载的持续时间。但我只是把它扔出去了。也许其他人可以建立这个概念。
答案 4 :(得分:0)
这是另一种选择 在进行通话之前,您可以显示图像,然后在功能中(不是在通话后)再次隐藏它。