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"> </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