4

我正在使用 Ajax 使用以下 JavaScript 代码生成文件上传进度条

function ulpoad_file(){ 


    var o = $id("progress");

    para = document.createElement("p")
    para.style.height = 2 + 'px'; 
    var progress = o.appendChild(para);
    var file = $id("file").files[0];


    var xhr = new XMLHttpRequest(); 


    xhr.upload.addEventListener("progress", function(e) {      
        var pc = parseInt(100 - (e.loaded / e.total * 100));
        progress.style.backgroundPosition = pc + "% 0";        
        p = 100-pc;
        $id("status").innerHTML = p.toString() + "% Uploaded";
    }, false);


    xhr.onreadystatechange = function(e) {
        if (xhr.readyState == 4) {
            progress.className = (xhr.status == 200 ? "success" : "failure");
        }
    };


    xhr.open("post", "", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            callback(xhr.responseText);
        }
    }

    var datas = new FormData();
    datas.append('file', file);


    xhr.send(datas);  

}

function $id(id) {
    return document.getElementById(id);
}

这适用于 chrome 和几个 firefox 版本。

但是“xhr.upload.addEventListener”不适用于移动浏览器(手机和标签中的安卓浏览器)和 Linux 机器中的 Firefox。

这有什么问题吗?在移动浏览器中使用 Ajax 作为进度条的正确方法是什么?

谢谢

4

0 回答 0