1

使用 Mootools 发出请求时,是否有任何方法可以跟踪“到目前为止”下载的输出?我知道有“onProgress”,但这只会给我下载的字节数。

正在下载的页面是一个电子邮件地址列表,对于已发送的每封电子邮件,该页面都会在页面上附加一行,直到执行完毕。

我想采用最新的线路,并将其呈现给用户,随着进展的进行......

4

1 回答 1

0

mootools 只支持 webkit 和 gecko 支持的东西(现在可能是 IE9/10)。

onLoadstart(event, xhr)

onProgress(event, xhr)

进度事件——如果有的话——应该足以让你继续前进。有关可用规范,请参阅https://dvcs.w3.org/hg/progress/raw-file/tip/Overview.html

http://jsfiddle.net/dimitar/tYdjN/

var list = [], 
    len = 10000, 
    loaded = $('loaded'),
    output = $('output'),
    count = 168,
    chunks = 0;

while(len--)
    list.push(Faker.Internet.email());

list = list.join('<br/>\n');

new Request({
    url: '/echo/html/',
    data: {
        html: list
    },
    onProgress: function (event, xhr) {
        chunks++;
        loaded.set('html', event.loaded + ' bytes');
        new Element('h4[html=Chunk ' + chunks +']').inject(output);

        new Element('div.chunk', {
            html: xhr.response,
            styles: {
                background: ['rgb(', count, ',', count,',', count, ')'].join('')
            }
        }).inject(output);
        count -= 16;
    },
    onComplete: function(){
        //console.log(this.response.text);
        // $('list').set('html', this.response.text);
    }
}).send();

这个例子使用了 jsfiddle 的 ajax api,我使用 Faker.js 生成 10000 封随机电子邮件 - jsfiddle 分块发回给我。每个块在 div 中输出自己的电子邮件。

于 2013-01-25T13:47:08.133 回答