Tengo el siguiente JavaScript
Código:
function ConstructorXMLHttpRequest()
{
if(window.XMLHttpRequest) /*Vemos si el objeto window(la base de la ventana del navegador) posee el método XMLHttpRequest(Navegadores como Mozilla y Safari). */
{
return new XMLHttpRequest(); //Si lo tiene, crearemos el objeto con este método.
}
else if(window.ActiveXObject) /*Sino tenía el método anterior, debería ser el Internet Exp. un navegador que emplea objetos ActiveX, lo mismo, miramos si tiene el método de creación. */
{
/*Hay diferentes versiones del objeto, creamos un array, que contiene los diferentes tipos desde la
versión mas reciente, hasta la mas antigua */
var versionesObj = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
for (var i = 0; i < versionesObj.length; i++)
{
try
{
/*Intentamos devolver el objeto intentando crear las diferentes versiones se puede intentar crear uno que no existe y se producirá un error. */
return new ActiveXObject(versionesObj[i]);
}
catch (errorControlado) //Capturamos el error, ya que podría crearse otro objeto.
{}
}
}
/* Si el navegador llego aquí es porque no posee manera alguna de crear el objeto, emitimos un mensaje de error. */
throw new Error("No se pudo crear el objeto XMLHttpRequest");
}
Pero en FireFox si me funciona bien, pero en IE 7 y 8 no me funciona hasta que presiono F5, ¿por que? alguien que me diga como hacer para que si funcione en IE 7 y 8 porque en el 6 si funciona bien.
a este lo llamo a cualquier pagina con
Código:
<script type="text/javascript" src="ConstructorXMLHttpRequest.js"></script>
y en mis paginas:
Código:
var peticion01 = null;
peticion01 = new ConstructorXMLHttpRequest();
y
Código:
function estadoPeticion() //Función que se llama cada vez que cambia el estado de peticion01.readyState.
{
switch(peticion01.readyState) //Según el estado de la petición devolvemos un Texto.
{
case 0:
document.getElementById('estado').innerHTML = "Sin iniciar";
break;
case 1:
document.getElementById('estado').innerHTML = "Cargando";
break;
case 2:
document.getElementById('estado').innerHTML = "Cargado";
break;
case 3:
document.getElementById('estado').innerHTML = "Interactivo";
break;
case 4:
document.getElementById('estado').innerHTML = "Completado";
//Si ya hemos completado la petición, devolvemos además la información.
document.getElementById('resultado').innerHTML = peticion01.responseText;
break;
}
}
function Coger(url) //Función coger, en esta caso le entra una dirección relativa al documento actual.
{
if(peticion01) //Si tenemos el objeto peticion01
{
peticion01.open('GET', url, true); //Abrimos la url, true=forma asíncrona
/*Asignamos la función que se llama cada vez que cambia el estado de peticion01.readyState
Y LO HACEMOS ANTES THE HACER EL SEND porque inicia la transmisión.*/
peticion01.onreadystatechange = estadoPeticion;
peticion01.send(null); //No le enviamos datos a la pagina que abrimos.
}
}
hay algun error, por que en FireFox si funciona pero en IE7 y 8 no funciona hasta que presiono F5 o actualizo la pagina.
¿como solucionar esto?