我一直在使用历史记录API,同时通过javascript/jquery异步加载页面。我想知道如何告诉浏览器网站正在加载,以便浏览器可以显示一个加载图片(例如火狐浏览器中的旋转轮)。
编辑:
更具体地说:
如果我在我的网站上加载一个页面,URL会改变,新内容会显示出来,但是Firefox不会显示旋转轮作为信号,表示页面正在加载。
如果我在Facebook的时间轴中打开一张图片,图像正在加载,URL会改变,Firefox会显示旋转轮以显示图像正在后台加载。
我也想要那个旋转轮!
我一直在使用历史记录API,同时通过javascript/jquery异步加载页面。我想知道如何告诉浏览器网站正在加载,以便浏览器可以显示一个加载图片(例如火狐浏览器中的旋转轮)。
编辑:
更具体地说:
如果我在我的网站上加载一个页面,URL会改变,新内容会显示出来,但是Firefox不会显示旋转轮作为信号,表示页面正在加载。
如果我在Facebook的时间轴中打开一张图片,图像正在加载,URL会改变,Firefox会显示旋转轮以显示图像正在后台加载。
我也想要那个旋转轮!
var i = $('<iframe>');
console.log(i);
i.appendTo('body');
function start() {
i[0].contentDocument.open();
setTimeout(function() {
stop();
}, 1000);
}
function stop() {
i[0].contentDocument.close();
setTimeout(function() {
start();
}, 1000);
}
start();
来源: jsFiddle
好的,异步请求知道正在加载某些内容。你只需要自己将事件传递到其他地方。例如,使用beforeSend钩子:
$.ajax('/your_stuff',
beforeSend: function() {
$(document).trigger('loading');
}
....)
然后:
$(document).on('loading', function() { alert("request is loading");}
从标签中我猜你正在使用jQuery进行AJAX。你可以使用全局的AJAX处理程序,如$.ajaxStart()
和$.ajaxComplete()
。无论你在代码中的哪个位置调用ajax方法,它们都会触发。
$('#myLoadingDiv').ajaxStart(toggleLoading).ajaxComplete(toggleLoading);
function toggleLoading(){
$(this).toggle();
}
API 参考 http://api.jquery.com/ajaxStart/
从你的问题措辞来看,我认为你想要能够控制实际浏览器标签上的加载图像。你无法控制它。在页面内使用自己的图像或文本也更容易被用户看到。
编辑:为使此代码起作用,您必须在具有 id=myLoadingDiv
的元素中提供自己的加载动画。