Я ищу альтернативу window.stop() для IE. Я попытался document.execCommand( "Стоп" ), но он не работает. Я пытаюсь отменить XMLHttpRequest, который вызывается из пользовательского элемента управления ASP, который я использую. Я не могу использовать jQuery.abort(), так как я не устанавливаю запрос самостоятельно.
IE, альтернативный window.stop() (отменить все ожидающие запросы)
Ответ 1
Я предполагаю, что на странице управления используется jQuery.ajax, и вы знаете, когда вам нужно отменить запрос по вашим критериям.
Как насчет чего-то подобного?
(function ($) {
var xhr = null,
originalAjax = $.ajax,
updatedAjax = function (url, options) {
xhr = originalAjax(url, options);
};
$.ajax = updatedAjax;
})(jQuery);
Теперь у вас есть переменная с именем xhr, которая содержит базовый объект xmlhttp. Вы можете вызвать abort() на объекте, когда вам нужно.
Возврат - это то, что переменная будет заполнена для каждого запроса ajax, выполняемого jQuery, и я бы включил этот script только на этой странице, возможно даже reset ajax, когда вы закончите.
Я не пробовал это, просто идея, так как я все время издевался над ajax-звонками. Некоторые могут подумать, что этот подход немного радикален!
Надеюсь, вы сочтете это полезным.
Ответ 2
Если у вас есть доступ к объекту, вы можете сделать это с помощью объекта 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>
Как вы можете видеть, текст запроса не загружен, потому что он прерывается.
Ответ 3
Я понимаю, что вы не задаете запрос самостоятельно, но имеете ли вы какой-либо доступ к нему, чтобы вы могли использовать onreadystatechanged-event в javascript? Если это так, вы можете определить, нужно ли вам отменить событие.