我正在为IE寻找window.stop()的替代品。我已经尝试过document.execCommand('Stop'),但它似乎不起作用。我正在尝试取消从我正在使用的ASP用户控件中调用的XMLHttpRequest。我不能使用jQuery的.abort()因为我没有自己设置请求。
答案 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事件吗?如果是,您可以确定是否必须取消该活动。