IE альтернатива window.stop () (отменить все ожидающие запросы) - PullRequest
11 голосов
/ 25 января 2012

Я ищу альтернативу window.stop () для IE.Я пробовал document.execCommand («Стоп»), но, похоже, он не работает.Я пытаюсь отменить XMLHttpRequest, который вызывается из пользовательского элемента управления ASP, который я использую.Я не могу использовать .abort () в jQuery, так как сам не задаю запрос.

Ответы [ 3 ]

3 голосов
/ 30 января 2012

Я предполагаю, что контроль на странице использует jQuery.ajax, и вы знаете, когда вам нужно прервать запрос, в соответствии с вашими критериями.

Как насчет этого?

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

Теперь у вас есть переменная с именем xhr, которая содержит базовый объект xmlhttp. Вы можете вызвать abort () для объекта, когда вам нужно.

Недостатком является то, что переменная будет заполняться для каждого запроса ajax, выполняемого jQuery, и я включил бы этот скрипт только на эту конкретную страницу, возможно, даже сбросив ajax, когда вы закончите.

Я не пробовал это, просто идея, так как я постоянно издевался над Ajax-вызовами. Кто-то может подумать, что этот подход немного радикальный!

Надеюсь, вы найдете это полезным.

1 голос
/ 30 января 2012

Если у вас есть доступ к объекту, вы можете сделать это с помощью обработчика события 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>

Как видите, текст запроса не загружается, поскольку он прерывается.

0 голосов
/ 27 января 2012

Я понимаю, что вы сами не устанавливаете запрос, но есть ли у вас какой-либо доступ к нему, чтобы вы могли использовать событие onreadystatechanged-javascript? Если это так, вы можете определить, нужно ли вам отменить событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...