Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Fallo Javascript sólo con IE

Estas en el tema de Fallo Javascript sólo con IE en el foro de Javascript en Foros del Web. Hola, estoy realizando una página web que hace uso de una API en la que recibo la respuesta en formato XML. Todo funciona correctamente sobre ...
  #1 (permalink)  
Antiguo 26/03/2013, 10:25
 
Fecha de Ingreso: agosto-2008
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 3
Fallo Javascript sólo con IE

Hola, estoy realizando una página web que hace uso de una API en la que recibo la respuesta en formato XML. Todo funciona correctamente sobre cualquier navegador, excepto cualquier IE, uso este código como vi en Internet para crear el objeto, ya que IE 6 no tiene el objeto de forma nativa.

Código Javascript:
Ver original
  1. if(Main.isIE6()) {
  2.             var XHRObj = new ActiveXObject("MSXML2.XMLHTTP.3.0");
  3.         }
  4.         else {
  5.             var XHRObj = new XMLHttpRequest();
  6.         }

El primer fallo lo conseguí arreglar googleando un poco, y me di cuenta de que necesitaba modificar las opciones de seguridad de IE para poder hacer las llamadas entre dominios diferentes.

Ahora me da un fallo Javascript, en el que dice:

Código Error:
Ver original
  1. El objeto no acepta esta propiedad o método

Usando alert he conseguido ver que el fallo lo da en el siguiente pedazo de código

Código Javascript:
Ver original
  1. var callBack = function(XHRObj) {
  2.                 var xmlResponse = XHRObj.responseXML;
  3.                 var status = xmlResponse.getElementsByTagName("status")[0];
  4.                                                
  5.                 if(status) {
  6.                     /* Status ok or first time */
  7.                     if(getNodeValue(status.firstChild).toString().toLowerCase() == "ok") {
  8.                         if(Main.countryCode != xmlResponse.getElementsByTagName("sCountryCode")[0].firstChild) {
  9.                             Main.countryCode = getNodeValue(xmlResponse.getElementsByTagName("sCountryCode")[0].firstChild);
  10.                         }

En concreto creo que esta en la condición del último if.

No se si es que IE no soporta alguna de las funciones que utilizo, por si es necesario mencionar, que hago uso de Jquery.

Gracias.
  #2 (permalink)  
Antiguo 26/03/2013, 10:53
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Fallo Javascript sólo con IE

A ver, para crear el objeto, con esto te basta
Código Javascript:
Ver original
  1. var xmlhttp;
  2. if (window.XMLHttpRequest)
  3.   {// IE7+, Firefox, Chrome, Opera, Safari
  4.   xmlhttp=new XMLHttpRequest();
  5.   }
  6. else
  7.   {// IE6, IE5
  8.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  9.   }

Luego, dónde y como está abriendo el XML? y cual es su estructura?

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 27/03/2013, 02:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Fallo Javascript sólo con IE

Hola, el problema es que el código es demasiado extenso, y esta dividido en varios archivos Js, pero donde envío la petición al servidor para obtener el archivo es la siguiente:

Código Javascript:
Ver original
  1. XHRObj.open("POST", this.serverURL, async);
  2.                
  3.                 XHRObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  4.                
  5.                 XHRObj.send(param);

Luego si el resultado es un estado 200 se llama a la función callBack que mostré en el primer post, el problema es que todo funciona perfectamente en todos los navegadores, con lo cual creo que el fallo esta en el uso de IE, algo como un objeto soportado por el navegador, y realmente uso siempre chrome devtolls para depurar mi javascript y no me apetece instalar mas aplicaciones de microsoft, si ellos no son capaces de adaptarse a los standars.
  #4 (permalink)  
Antiguo 27/03/2013, 05:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Fallo Javascript sólo con IE

Hola, ya he conseguido solucionarlo, tan sólo tenia poner esto extra para que IE supiera que es lo que realmente quería que me devolviera, ya que siempre me devolvía undefined

Código Javascript:
Ver original
  1. if(Main.countryCode != xmlResponse.getElementsByTagName("sCountryCode")[0].firstChild.data)

Gracias

Etiquetas: fallo, funcion, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:20.