jquery - example - cross domain javascript
Evitar el error "SCRIPT5: Acceso denegado" en IE (3)
Asegúrese también de que no está cargando su activo jQuery desde una CDN como las Bibliotecas Hospedadas de Google. Debido a que el dominio es diferente, eso viola ciertos protocolos de seguridad que Microsoft usa para proteger contra Cross Site Scripting en Internet Explorer.
Escenario: Página A en A.com que tiene un IFrame que contiene la Página B en B.com. La página B usa jQuery 1.10.1 y no necesita comunicarse con la página A.
Independientemente de este hecho, en IE9 e IE10, jQuery genera un "SCRIPT5: acceso denegado". error y aparentemente se niega a ejecutar cualquier jQuery. No necesito comunicación entre dominios, solicitudes de AJAX, etc., pero sí necesito jQuery para cargar y ejecutar sin errores en la página B.
¿Hay alguna manera de evitar que aparezca este error (e inhibir la ejecución del código) en IE9 e IE10? (Para su información, otros navegadores generan de forma similar errores de "acceso denegado", pero no obstaculizan la ejecución del código)
ACTUALIZAR:
jsFiddle: http://jsfiddle.net/86q5k/4/
Los contenidos de la página de host son (del jsFiddle):
<iframe src="http://endorkins.com/test-iframe.html"></iframe>
Los contenidos de la página iFramed son:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
console.log(''Hello! Congratulations. Your browser is neat, and doesn/'t sniff glue! (http://bit.ly/12QTvTT)'');
});
</script>
</head>
<body>
</body>
</html>
Resultado en Chrome (Observe el mensaje en la consola):
Resultado en IE 9.0.8112 (Observe la omisión del mensaje en la consola):
Encontré una solución. Esto parece ser un error ("función"?) En jQuery 1.10.1. Con jQuery 1.10.0, el error ya no ocurre:
<iframe src="http://endorkins.com/test-iframe-1.10.0.html"></iframe>
Extraño. Muy extraño. Si alguien sabe la razón por la que esto está sucediendo en 1.10.1, y cómo solucionarlo, ¡yo (y los secuaces de jQuery en todo el mundo) estarían muy interesados en saberlo! :)
ACTUALIZACIÓN: Parece que este es un error legítimo de jQuery 1.10.1: http://bugs.jquery.com/ticket/13980
ACTUALIZACIÓN: según @ emanuele-greco, esto se soluciona en 1.10.2 y posteriores. Por lo tanto, actualizar su versión de jQuery probablemente solucionará el problema.
Ok, encontré el mismo problema y lo solucioné con la solución más extraña y horrible jamás creada.
Intento usar una imagen para abrir el cuadro de diálogo de carga del archivo y luego enviar un formulario automático en el evento de cambio. Me había resignado a mí mismo de que en IE los usuarios iban a tener que hacer clic en una imagen para hacer la publicación. Coloqué la imagen en el formulario (como tengo en varios lugares del sitio. Esto generó el error de acceso denegado, en estado de shock lo hice de nuevo y Yep obtuvo el error. En el tercer clic funcionó. Así que lo intenté de nuevo con los mismos resultados el primer error de dos clics y el tercero funcionó. Y el código JavaScript simple que es feo como el jabón casero pero ahora funciona
var files= document.getElementById("newfiles");
files.onchange = addFiles;
function addFiles() {
try {
$("#fileupload").submit();
} catch (e) {
try {
$("#fileupload").submit();
} catch (e) {
try {
$("#fileupload").submit();
} catch (e) {
alert(e);
}
}
}
};