6

我尝试了所有我能想到的至少达到 IE9 中的进度功能,但没有任何效果。所有其他浏览器都可以进入进度功能并毫无问题地编写测试文本。希望有人可以帮助我。谢谢!

     var info = document.getElementById('info');
     var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();  
        } 
        else if (window.ActiveXObject) { 
            try {  
                xhr = new ActiveXObject("Msxml2.XMLHTTP");  
            } 
            catch (e) {  
                try {  
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");  
                } 
                catch (e) {}  
            }  
        }
        xhr.attachEvent("onprogress", function(e) {
            info.innerHTML += "loading...<br />";   
        });

        /*xhr.addEventListener("progress", function(e) {
            info.innerHTML += "loading...<br />";   
        }, false);*/

        xhr.open("GET", "10_MB_File.txt", true);
        xhr.send(null);
4

4 回答 4

3

onprogress事件是 XMLHttpRequest Level 2 规范的一部分...

... IE 9 及以下版本不支持。但是,IE 10 应该支持它...

有关哪些浏览器支持 XHR Level 2 的更多信息,请访问 caniuse.com...

于 2012-10-12T20:12:55.400 回答
2

IE9 及以下不支持 onprogress,因此您无法使其正常工作。

var xhr = new XMLHttpRequest();
console.log('onprogress' in xhr);
于 2012-10-12T20:09:17.710 回答
0

您可以使用该onreadystatechange事件并显示您的信息。我只是建议将其作为一种解决方法。

xhr.onreadystatechange=function() {
    if (xhr.readyState != 4) {
        // Display a progress message here.
    } else if (xhr.readyState==4 && xhr.status==200) {
        // Request is finished, do whatever here.
    }
}
于 2012-10-12T20:14:49.433 回答
0

添加到建议列表,如果在您的项目中使用 JQuery。可以通过下面的函数来实现,当然需要JQuery $.ajax 请求。这些客户端库的优点是它们具有基于浏览器实例化的对象。例如:JQuery 基于浏览器处理“ActiveXObject("Msxml2.XMLHTTP")”或“ActiveXObject("Microsoft.XMLHTTP")”。

//displays progress bar
$('#info').ajaxStart(function () {
    $(this).show();
}).ajaxStop(function () {
    $(this).hide();
});
于 2012-10-12T20:22:49.483 回答