历史Api:如何告诉浏览器页面正在加载?

Oll*_*lli 11 javascript api ajax jquery browser-history

当我通过javascript/jquery异步加载页面时,我一直在使用历史API.我想知道如何告诉浏览器该网站正在加载,以便浏览器可以显示加载图片(如firefox中的旋转轮).

编辑:

更具体:

如果我在我的网站上加载页面,网址会更改,则会显示新内容,但Firefox不会将旋转轮显示为信号,即页面正在加载.

如果我在Facebook的时间轴上打开图片,图片正在加载,网址会更改,Firefox会显示要显示的旋转轮,图像正在后台加载.

我也想要那个纺车!

Oll*_*lli 7

我在这些问题中找到了答案:

如何让AJAX触发浏览器的加载

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();
Run Code Online (Sandbox Code Playgroud)

来源:jsFiddle

该脚本创建一个iframe,由ajax.start和ajax.stop-event触发.


Chu*_*ckE 0

好吧,异步请求知道正在加载某些内容。您只需自己将事件传播到其他地方即可。例如,使用 beforeSend 挂钩:

$.ajax('/your_stuff', 
       beforeSend: function() {
         $(document).trigger('loading');
       }
       ....)
Run Code Online (Sandbox Code Playgroud)

进而:

$(document).on('loading', function() { alert("request is loading");}
Run Code Online (Sandbox Code Playgroud)

我建议您在使用历史 API 更新 URL 的同时触发该事件。