Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/01/2012, 05:44
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 8 meses
Puntos: 1485
Respuesta: No carga el XML

no he leido detenidamente todo el código, fui directamente a la parte de DOMImplementation (document.implementation). del activex no voy hacer mención porque no he buscado información sobre su implementación. los argumentos de createDocument son: namespaceURI, qualifiedName, y el DocumentType. básicamente namespaceURI es la misma función del atributo xmlns, qualifiedName es el elemento raíz del documento, y DocumentType es la misma función que la declaración <!DOCTYPE> de un documento (si, xml también puede tener DOCTYPE). (w3.org#Core DOM Level 2.) fíjate que de plano estas usando mal la función. por otro lado, no tengo claro si la función load y la propiedad async es parte del estandar. resulta que firefox tiene soporte para ello, por el contrario webkit (chrome) no lo reconoce.

supongo que querás darle soporte a varios navegadores porque de lo contrario no tendrías la versión activex. mi recomendación es volver con XMLHttpRequest. para mis gusto, es menos complicado y funciona desde la versión iexplorer7, por lo que no tendrías que complicarte con el uso de activex. probablemente el error que estabas teniendo inicialmente es el mismo que antes mencione, no esperabas a que terminará de cargar el documento. tienes dos formas de hacerlo: asíncrono con evento o síncrono. la diferencia es que en asíncrono el navegador no se detiene a esperar la respuesta de la petición, por tanto el flujo continua de forma normal. en síncrono, el navegador se "congela" hasta que este reciba alguna respuesta de la petición y luego continua con el proceso. el modo a seleccionar es de tu gusto o necesidad. simplemente tienes que hacer lo siguiente.
Código:
// versión async;
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
// cuando el estado llegue a la fase "complete", invocas el resto del código que maneja el documento xml;
};
request.open(method, url, true); // true significa que la petición es asíncrona;
request.send();


// versión síncrona;
var request = new XMLHttpRequest();
request.open(method, url, false); // false significa que la petición es síncrona;
request.send();
// resto del código que maneja el documento xml;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.