alert对ajax阻塞调查(IE, Chrome, FF)

前阵子做保守工作,对一个js效果进行了改进,由于自己在chrome下测试没问题就丢给同事测试,同事用的是FF,发现不正常,后来又发现这个js在IE10下也不行,不得不调查,结果发现Chrome的alert对ajax是完全阻塞的,但是IE10和FF即使弹出alert,也不会影响正在ajax的访问,也就是不阻塞ajax。

附上测试代码

<div id="result"></div>

<script>
    function loadXMLDoc(url) {
        var xmlhttp;
        xmlhttp = null;
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                if (xmlhttp.responseText == '1') {
                    alert(1);
                    document.getElementById('result').innerHTML='';
                }else if(xmlhttp.responseText == '2') {
                    document.getElementById('result').innerHTML='123456';
                }
            }
        };
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }

    loadXMLDoc('http://localhost/echo.php?s=1');//返回1,为了让alert弹出
    loadXMLDoc('http://localhost/echo.php?s=2');//返回2,为了让div#result部分修改值
</script>

会发现在ff和ie10下,alert弹出后及时不关闭它也不会阻塞住后面对div#result部分修改的代码的执行

但chrome下只有点了ok之后才会修改div#result部分

posted on 2014-01-25 11:13  phphot  阅读(1369)  评论(0编辑  收藏  举报