IE替代window.stop()(取消所有挂起的请求)

时间:2012-01-25 16:01:55

标签: asp.net ajax internet-explorer request

我正在为IE寻找window.stop()的替代品。我已经尝试过document.execCommand('Stop'),但它似乎不起作用。我正在尝试取消从我正在使用的ASP用户控件中调用的XMLHttpRequest。我不能使用jQuery的.abort()因为我没有自己设置请求。

3 个答案:

答案 0 :(得分:3)

我假设页面上的控件使用jQuery.ajax,您知道何时需要根据您的条件中止请求。

这样的事情怎么样?

(function ($) {
    var xhr = null, 
        originalAjax = $.ajax,
        updatedAjax = function (url, options) {
            xhr = originalAjax(url, options);
        };
    $.ajax = updatedAjax;
})(jQuery);

现在你有一个名为xhr的变量,它保存了底层的xmlhttp对象。您可以在需要时调用对象上的abort()。

缺点是将为jQuery完成的每个ajax请求填充变量,我只会在该特定页面上包含此脚本,甚至可能在完成后重置ajax。

我没有试过这个,只是一个想法,因为我一直在嘲笑ajax电话。有些人可能认为这种做法有点激烈!

希望你觉得它很有用。

答案 1 :(得分:1)

如果您有权访问该对象,则可以使用对象的abort()和onreadystatechange事件处理程序来执行此操作。这是我从w3schools

调整的一个工作示例
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==2){ xmlhttp.abort();}
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","xmlhttp_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>

</body>
</html>

如您所见,请求文本未加载,因为它已中止。

答案 2 :(得分:0)

我知道你自己没有设置请求,但是你有任何访问权限,以便你可以在javascript中使用onreadystatechanged事件吗?如果是,您可以确定是否必须取消该活动。