Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/07/2006, 15:21
Stendelis
 
Fecha de Ingreso: julio-2006
Ubicación: Montevideo
Mensajes: 34
Antigüedad: 18 años, 6 meses
Puntos: 0
Este script en IE no funciona (urgente)

Hola,

Estoy necesitando ayuda con este script.

Lo principal es que no quiero que se haga preload de las imágenes principales.

Lo que quiero es que al dar la orden de cambiar la imagen, se cree el objeto imagen y una vez cargada haga el cambio...

Para eso utilizo imgName.onload = cambiarimagen();
yo creo que esto es o que no me funciona bien, que en IE si se demora en cargar la imágen se tranca todo, lo que necesitaría saber es como verivicar que se cargo el objeto imagen para luego generar el pedido de que la cambie...


Envío un ejemplo de lo que hablo, si lo ven funcionar en IE se daran cuenta...

armen esta url y verán lo que les digo (no la puedo poner porque el foro no me permite)

200.40.136.20
alejandro_stendelis/prueba
default.hrml

(ojo si lo ven funcionar bien es que carga muy rápido las imágenes, intenten en hacer una imágens mas pesada y verán.

Ayudenmennnnn....

Puedo reacer todo el script si es necesario...

aca les envío el html y abajo agrego las imágenes de ejemplo



Código:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
// Declaramos las variables 
	var its;
	var browserName = '';
	var browserNameLong = '';
	var browserNew = '';
	var preloadFlag = false;
	var Macintosh = navigator.userAgent.indexOf('Mac')>0;

// Verificamos version, agente, plataforma y nombre 
	function its() {
		var n = navigator;
		var ua = ' ' + n.userAgent.toLowerCase();
		var pl = n.platform.toLowerCase();
		var an = n.appName.toLowerCase();
		this.version = n.appVersion;
		this.nn = ua.indexOf('mozilla') > 0;
		if(ua.indexOf('compatible') > 0) {
			this.nn = false;
		}		
		this.opera = ua.indexOf('opera') > 0;
		this.ie = ua.indexOf('msie') > 0;
		this.major = parseInt( this.version );
		this.minor = parseFloat( this.version );
		this.mac = ua.indexOf('mac') > 0;
		this.win = ua.indexOf('win') > 0;
		if(this.ie) {
			if(ua.indexOf("msie 5") > 1) {
				var msieIndex = navigator.appVersion.indexOf("MSIE") + 5;
				this.major = parseFloat(navigator.appVersion.substr(msieIndex,3));
			}
		}
		return this;
	}

// Declaramos las variables de navegador
	function browserNaming() {
		its = new its();		
		if (!document.getElementById) {
			browserNew = false;
		}
		else {
			browserNew = true;
		}
		if (its.opera) {
			browserName = "Opera";
		}
		else if (its.ie) {
			browserName = "IE";
		}
		else {
			browserName = "NS";
		}
		browserNameLong = browserName + its.major;
	}

// Función crear objetos imágen
	function createObject(imgName,imgSrc) {
		if (loadingFlag) {
			eval(imgName + ' = new Image()');
			eval(imgName + '.src = "' + imgSrc + '"');
			return imgName;
		}
	}

// Función cambiar imágen
	function changeImage(layer,imgName,imgObj) {
		if (preloadFlag) {
			if (browserNew) {
				document.getElementById(imgName).src = eval(imgObj+'.src');
			}
			if ((!browserNew) && (browserName == "NS") && (layer!=null)) {
				eval('document.'+layer+'.document.images["'+imgName+'"].src = '+imgObj+'.src');
			}
			else {
				document.images[imgName].src = eval(imgObj+'.src');
			}
		}
	}
		
// Función cambiar texto en layer	
	function rewriteTextLayer(txt,id) {
		txt += "\n";
		if (browserNew && browserName == "NS") {
			botOver = document.getElementById(id);
			range = document.createRange();
			range.setStartBefore(botOver);
			domfrag = range.createContextualFragment(txt);
			while (botOver.hasChildNodes()) {
				botOver.removeChild(botOver.lastChild);
			}
			botOver.appendChild(domfrag);
		}
		else {
			document.all[id].innerHTML = txt;
		}
	}
	







// Chequea el navegador
	browserNaming();

// pone true para poder crear objetos imágenes
	loadingFlag = true;

//setea variables por defecto
	var arrdef = 0
	var derdef = 0

//*****
// Comienza código de carga de imágenes
//*****

//Carga imagenes derecha	
	der = new Array();
	der = "azu;;ver";
	der = der.split(';;');
	
//Arma los objetos de imagen derecha  -----> ej: der_azu_on, der_azu_off
	for(x=0;x<der.length;x++) {
		createObject('der_' + der[x] + '_on' ,'der_' + der[x] + '_on.gif');
		createObject('der_' + der[x] + '_off','der_' + der[x] + '_off.gif');	
	}

//Carga imagenes arr
	arr = new Array();
	arr = "ama;;nar;;roj";
	arr = arr.split(';;');
	
//Arma los objetos de imagen arr  -----> ej: arr_ama_on, arr_nar_on, arr_roj_on
	for(x=0;x<arr.length;x++) {
		createObject('arr_' + arr[x] + '_on' ,'arr_' + arr[x] + '_on.gif');
		createObject('arr_' + arr[x] + '_off','arr_' + arr[x] + '_off.gif');
	}

//Carga imagenes pie
	pie = new Array();
	pie = "ama;;nar;;roj";
	pie = pie.split(';;');
	
//Arma los objetos de imagen pie -----> ej: pie_ama, pie_nar
	for(x=0;x<pie.length;x++) {
		createObject('pie_' + pie[x], 'pie_' + pie[x] + '.gif');
	}

	loadingFlag = false;
	preloadFlag = true;

//Carga textos pie
	tex = new Array();
	tex = "Imagen amarilla;;imagen naranja;;imagen roja";
	tex = tex.split(';;');

// Función cambiar imagen arriba
	function cambiararr(num) {
			// cambia imagen arr a off
			changeImage('','arr_' + arrdef,'arr_' + arr[arrdef] + '_off');
			// cambia arr activo
			arrdef = num;
			// cambia imagen dia a on
			changeImage('','arr_' + arrdef,'arr_' + arr[arrdef] + '_on');
			
			// CAMBIA MIMAGENS SEGUN VARIABLES
			cargarimagen(arrdef,derdef);
	}

// Función cambiar imagen arriba
	function cambiarder(num) {
			// cambia imagen arr a off
			changeImage('','der_' + derdef,'der_' + der[derdef] + '_off');
			// cambia arr activo
			derdef = num;
			// cambia imagen dia a on
			changeImage('','der_' + derdef,'der_' + der[derdef] + '_on');
			// CAMBIA MIMAGENS SEGUN VARIABLES
			cargarimagen();
	}

	// Función cambiar imagen
	function cargarimagen() {
			//carga objetos imagenes 
			imgName = 'img_' + arr[arrdef] + '_' + der[derdef]
			imgSrc  = 'img_' + arr[arrdef] + '_' + der[derdef] + '.gif'
			loadingFlag = true;
			createObject(imgName,imgSrc);
			imgName.onload = cambiarimagen();
			loadingFlag = false;
	}	

	// Función cambiar mapa
	function cambiarimagen() {
		// CAMBIA MAPA SEGUN VARIABLES, TITULO Y KEY		
		changeImage('','pie','pie_' + arr[arrdef]);
		changeImage('','img','img_' + arr[arrdef] + '_' + der[derdef]);
		rewriteTextLayer(tex[arrdef],'txtlayer')
	}	
	
	//inicia imagenes por defecto al inicio
	function loaddef() {
		cambiararr(arrdef);
		cambiarder(derdef);
	}	
	
</script>
</head>

<body onload="loaddef();">
<table width="300" border="0" cellspacing="10">
  <tr>
    <td align="left" valign="top"><a href="javascript:;" onClick="cambiararr(0);"><img src="arr_ama_off.gif" name="arr_0" width="50" height="50" border="0" id="arr_0" /></a></td>
    <td align="left" valign="top"><a href="javascript:;" onClick="cambiararr(1);"><img src="arr_nar_off.gif" name="arr_1" width="50" height="50" border="0" id="arr_1" /></a></td>
    <td align="left" valign="top"><a href="javascript:;" onClick="cambiararr(2);"><img src="arr_roj_off.gif" name="arr_2" width="50" height="50" border="0" id="arr_2" /></a></td>
    <td align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3" rowspan="2" align="left" valign="top"><img src="img_inicio.gif" name="img" width="200" height="200" id="img" /></td>
    <td align="left" valign="top"><a href="javascript:;" onClick="cambiarder(0);"><img src="der_azu_off.gif" name="der_0" width="100" height="100" border="0" id="der_0" /></a></td>
  </tr>
  <tr>
    <td align="left" valign="top"><a href="javascript:;" onClick="cambiarder(1);"><img src="der_ver_off.gif" name="der_1" width="100" height="100" border="0" id="der_1" /></a></td>
  </tr>
  <tr>
    <td colspan="3" align="left" valign="top"><img src="pie_inicio.gif" name="pie" width="200" height="50" id="pie" /></td>
    <td align="left" valign="top"><span id="txtlayer">Imagen inicio </span></td>
  </tr>
</table>
</body>
</html>


Para descargar las imágenes entren en 

200.40.136.20

carpeta alejandro_stendelis/prueba

y los nombres de las imágenes son


arr_ama_off.gif
arr_ama_on.gif
arr_nar_off.gif
arr_nar_on.gif
arr_roj_off.gif
arr_roj_on.gif
der_azu_off.gif
der_azu_on.gif
der_ver_off.gif
der_ver_on.gif
img_inicio.gif
pie_inicio.gif
pie_ama.gif
pie_nar.gif
pie_roj.gif
img_ama_azu.gif
img_ama_ver.gif
img_nar_azu.gif
img_nar_ver.gif
img_roj_azu.gif
img_roj_ver.gif

Última edición por Stendelis; 20/07/2006 a las 15:27