有没有AJAX进度事件在IE和如何使用它?(Is there AJAX progress event

2019-09-24 01:48发布

我尝试了所有我能想到的,至少得到进度功能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);

Answer 1:

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

  • http://www.w3.org/TR/XMLHttpRequest2/

  • http://www.w3.org/TR/XMLHttpRequest2/#event-handlers

...其不受IE 9和下方支撑。 然而,IE 10是应该支持它...

  • http://msdn.microsoft.com/en-us/library/ie/hh673569(v=vs.85).aspx#Enhanced_Event_Support

欲了解更多有关该浏览器支持XHR 2级,看看caniuse.com ...

  • http://caniuse.com/#feat=xhr2


Answer 2:

IE9下不支持onprogress,因此,你为什么不能得到它的工作。

var xhr = new XMLHttpRequest();
console.log('onprogress' in xhr);


Answer 3:

你可以使用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.
    }
}


Answer 4:

添加到建议列表,如果jQuery是在项目中使用。 它可以通过以下功能实现和ofcourse,它需要JQuery的$就要求。 这些客户端库的优势是他们有一个基于浏览器的实例化对象。 对于前:JQuery的照顾 “的ActiveXObject(” MSXML2.XMLHTTP “)” 或 “的ActiveXObject(” Microsoft.XMLHTTP “)” 的基础上的浏览器。

//displays progress bar
$('#info').ajaxStart(function () {
    $(this).show();
}).ajaxStop(function () {
    $(this).hide();
});


文章来源: Is there AJAX progress event in IE and how to use it?