Estoy buscando una alternativa a window.stop() para IE. He intentado document.execCommand ('Parar'), pero parece que no funciona. Estoy intentando cancelar un XMLHttpRequest que se llama desde un control de usuario ASP que estoy usando. No puedo usar .Query() de jQuery ya que no configuro la solicitud yo mismo.IE alternativa a window.stop() (cancelar todas las solicitudes pendientes)
Respuesta
Supongo que el control en la página usa jQuery.ajax y usted sabe cuándo debe cancelar la solicitud, según sus criterios.
¿Qué tal algo como esto?
(function ($) {
var xhr = null,
originalAjax = $.ajax,
updatedAjax = function (url, options) {
xhr = originalAjax(url, options);
};
$.ajax = updatedAjax;
})(jQuery);
Ahora tiene una variable llamada xhr que contiene el objeto xmlhttp subyacente. Puede llamar a abort() en el objeto cuando lo necesite.
El inconveniente es que la variable se completará para cada solicitud ajax hecha por jQuery, y solo incluiría esta secuencia de comandos en esa página en particular, tal vez incluso reinicie el ajax cuando haya terminado.
No he intentado esto, solo una idea, ya que me he burlado de las llamadas ajax todo el tiempo. ¡Algunos podrían pensar que este enfoque es un poco drástico!
Espero que lo encuentres útil.
Entiendo que no establezca la solicitud usted mismo, pero ¿tiene algún tipo de acceso a ella, para que pueda utilizar el evento onreadystategedged en javascript? De ser así, puede determinar si debe cancelar el evento o no.
No puedo cambiar el código js del control de usuario asp. Si hay una manera de capturar la creación o el lanzamiento de dicha solicitud y luego adjuntar algún tipo de evento, sería genial. –
Si tiene acceso al objeto, puede hacerlo con el controlador de eventos abort() y el evento onreadystatechange del objeto. Aquí está un ejemplo de trabajo pellizqué de 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>
Como se puede ver, el texto de solicitud no se ha cargado ya que ésta se abortó.
- 1. jQuery abandona todas las solicitudes pendientes de AJAX
- 2. Cómo cancelar elementos pendientes de un ScheduledThreadPoolExecutor?
- 3. Cómo capturar todas las solicitudes realizadas por página en webdriver? ¿Hay alguna alternativa a Browsermob?
- 4. javascript: cancelar todo tipo de solicitudes
- 5. Does Application_Start bloquea todas las solicitudes entrantes
- 6. CORS in grails: ¿fallan todas las solicitudes?
- 7. htaccess: redirige todas las solicitudes a diferentes dominios
- 8. IIS: ¿Redirige TODAS las solicitudes a una página?
- 9. Reencaminando todas las solicitudes php a través de index.php
- 10. IE Alternativa a Columna-Cuenta & Columna-Gap
- 11. Filtro de servlet para todas las solicitudes
- 12. IE frameBorder alternativa
- 13. Anular todas las solicitudes de jQuery AJAX globalmente
- 14. Cancelar las solicitudes AJAX en vuelo utilizando Jquery .ajax?
- 15. Android cancelar todas AlarmManager
- 16. Verificar solicitudes AJAX pendientes o solicitud HTTP GET/POST
- 17. Alternativa de Firebug para IE
- 18. Alternativa a las cookies
- 19. Cancelar las solicitudes de reunión de Outlook a través de MailMessage en C#
- 20. ¿Podría ser que Chrome cancele las solicitudes Ajax pendientes, una vez que el navegador se redirige a otra URL?
- 21. htaccess - redirigiendo todas las solicitudes al dominio root
- 22. Javascript: Cancelar/Detener solicitudes de imagen
- 23. Cancelar todas las animaciones jQuery slideUp y slideDown en cola
- 24. Todas las solicitudes reciben HTTP Error 401.2 - Respuesta no autorizada
- 25. Registrando todas las solicitudes y respuestas de Soap en PHP
- 26. ¿Qué significa "bloquear todas las solicitudes de carga de red"?
- 27. Alternativa a regex: coincide con todas las instancias que no están dentro de las cotizaciones
- 28. Interceptar todas las solicitudes provenientes de una página web
- 29. ¿Cómo puedo controlar todas las solicitudes de Internet?
- 30. nodejs realiza una acción común para todas las solicitudes
Me gusta su enfoque. Es exactamente lo que quiero hacer. Aunque no soy tan bueno con jQuery, entonces estoy teniendo algunos problemas. No estoy seguro de que el código de muestra se ejecute solo una vez y luego la variable xhr se debe completar automáticamente para cada solicitud, o debería ejecutar el código cada vez que desee capturar una solicitud. Si lo ejecuto una vez (simplemente poniendo el código en el bloque de script) siempre tengo la misma solicitud con ESTADO OK dentro de la xhr. Si pongo su código en la función donde quiero abortar las solicitudes actuales, xhr permanece nulo. Realmente agradecería su ayuda. Muchas gracias :) –
Ese código solo debe ejecutarse una vez en la carga de la página, antes de cualquier solicitud de AJAX. También debe tener cuidado con el alcance, quiere la variable en un ámbito global, para que pueda deshacerse del alcance de jquery y ponerlo en el evento listo. De nuevo, para cada solicitud, esa variable se cargará, y se reemplazará, por lo que debe tomar eso antes de que lo haga. Espero que lo hagas funcionar, eres bienvenido! No olvide marcar mi respuesta si lo hace;) –
Necesito abortar la solicitud solo si el usuario así lo desea, así que necesito tener la solicitud actual pendiente dentro de una variable. Lo que tengo dentro de xhr es una solicitud ya completada. ¿Cómo tomo esa última solicitud pendiente? Gracias por acompañarme en esto (: –