javascript - removeattr - Acceso denegado a la secuencia de comandos jQuery en IE
removeattr javascript (10)
¿Has intentado utilizar lo último de JQuery (> jquery-1.8.0)? Desde la versión 1.8.0, resolvieron algunos errores de IE9. Quizás este también.
Tengo un iframe que usa el script jQuery 1.4.2. El mismo iframe se inyecta en los sitios http
y https
. El script jQuery se incluye en el archivo HTML principal como una ruta relativa (por ejemplo, /scripts/jquery-1.4.2.min.js).
Cuando se realiza una llamada AJAX, Internet Explorer niega el acceso. El AJAX llama a otro subdominio, pero está usando el protocolo correcto. Todos los demás navegadores funcionan pero Internet Explorer da el siguiente error:
SCRIPT5: Acceso denegado.
jquery-1.4.2.min.js, línea 127 carácter 344
Escuché que este error proviene de llamadas AJAX entre dominios. Pero ¿por qué IE es el único que me está dando una mierda? ¿Hay una solución de IE?
Además, este es mi AJAX:
$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : ''getMessage'', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
Cambié mi JQuery de la versión 1.10.1 a 1.10.2 y parece que me ha solucionado este problema.
Estaba enfrentando un problema similar. Estaba usando el control de carga de archivos, pero estaba oculto y tenía otro elemento que intentaba controlar la carga de archivos y los eventos para cargar el archivo de forma AJAX.
intente usar el control de carga de archivos directamente. este problema resuelto en mi aplicación.
Esto resolvió el problema con gracia para mí:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
Simplemente instale / compile después de jQuery y antes de su script y use el método $ .ajax como lo haría normalmente, el resto se maneja automáticamente.
IE requiere que uses XDomainRequest en lugar de XHR para cruzar el sitio, puedes probar algo como ...
if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", url);
xdr.onload = function() {
// XDomainRequest doesn''t provide responseXml, so if you need it:
var dom = new ActiveXObject("Microsoft.XMLDOM");
dom.async = false;
dom.loadXML(xdr.responseText);
};
xdr.send();
} else {
// your ajax request here
$$.ajax({
url: thisURL,
dataType: "json",
data: {cmd : ''getMessage'', uurl: urlVar, t: Math.random()},
success: function(ret){
callback(ret)
}
});
}
Referencia
http://forum.jquery.com/topic/cross-domain-ajax-and-ie
no estoy seguro de si se ajusta a tu situación
xdr = new XDomainRequest();
xdr.onload=function()
{
alert(xdr.responseText);
}
xdr.open("GET", thisUrl); //thisURl ->your cross domain request URL
//pass your data here
xdr.send([data]);
puedes encontrar más orientación here
Me sale este error (y por lo tanto google aquí), pero la razón era muy diferente. Entonces, si no tiene cross site y aún obtiene este error de acceso denegado: vuelva a verificar el valor enviado
digamos que afecta a una de las variables con la siguiente expresión incorrecta:
urlVar = $("theID").val // without () this was the error!
[...] ajax llamada:
data: {cmd : ''getMessage'', uurl: urlVar, t: Math.random()},
Google / FF no tiene ningún problema con esto (verifique qué es lo que recibe el servidor ...) ¡PERO se niegan a enviar esto!
Parece que MS está encontrando su propia forma de hacer las cosas, en lugar de adoptar recomendaciones de la industria. Encontré la solución aquí:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest/blob/master/jQuery.XDomainRequest.js
Simplemente agrega ''callback =?'' en su solicitud de URL de Ajax como aquí: http://wsvdmeer.blogspot.com.es/2012/08/bugfix-getjson-not-working-in-ie.html
Tuve un problema similar y la solución para mí fue usar jsonp en lugar de json. De esa forma no tuve que dividir una versión de cliente para IE.
Solo puede hacer esto si el servidor de servidor json admite la variable de solicitud de devolución de llamada o si tiene acceso al servidor y puede agregar soporte. Aquí hay una página que me ayudó a entender el proceso. Su .net mvc se centró, pero ofrece una buena visión de la diferencia entre json y jsonp.
http://blogorama.nerdworks.in/entry-EnablingJSONPcallsonASPNETMVC.aspx
Verifique el dominio al que está accediendo, los siguientes encabezados de respuesta deberían estar allí
"Access-Control-Allow-Methods" : "POST, GET, OPTIONS"
"Access-Control-Allow-Origin" : "http://www.mydomain.com" or "*"
el otro dominio debe permitir su solicitud de script. Un encabezado más para agregar a su respuesta es el encabezado P3P.
"p3p" : "CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
debería ayudarte.