前阵子做保守工作,对一个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部分