Foros del Web » Programando para Internet » Javascript »

Una función que me funciona en ie y no en mozilla ¿Por qué?

Estas en el tema de Una función que me funciona en ie y no en mozilla ¿Por qué? en el foro de Javascript en Foros del Web. Hola a todos, Perdonad, pero soy nuevo aquí, y si incumplo alguna norma del foro, que se me diga, por favor. Pues bien, os paso ...
  #1 (permalink)  
Antiguo 03/07/2007, 03:53
 
Fecha de Ingreso: julio-2007
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Una función que me funciona en ie y no en mozilla ¿Por qué?

Hola a todos,

Perdonad, pero soy nuevo aquí, y si incumplo alguna norma del foro, que se me diga, por favor.

Pues bien, os paso a hacer una consulta, a ver si alguien me puede ayudar.

Primero, manifestar que sé algo, lo justito, de html y nada de nada de Javascript.

Y a pesar de ello, pues me puse a hacer una página web: www.thamar.net

Y la primera me quedó muy sosa, así que quise animar un poco el sistema menús, de gráficos y añadir un par de efectos... De no sé dónde (no lo recuerdo, fue en 2004), me debí bajar una rutina de javascript que hacía que una pestañíta de la izquierda, desplegara una especie de menú lateral... Bueno lo mejor es que lo veáis en la página, pulsando a la izquierda en el rótulo vertical Thamar.

Es un efecto que me encanta, pero no me funciona en el mozilla, y sí en el internet explorer y me gustaría saber qué tengo que hacer para que me funcione en los dos.

Esta es la rutina javascript, que está justo al principio del código...

Código:
<SCRIPT type="text/javascript">
<!--
	function MM_swapImgRestore() 
	{
   	var i,x,a=document.MM_sr; 

   	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

  	function MM_preloadImages() 
  	{
   	var d=document; 

   	if(d.images)
   	{
   		if(!d.MM_p) d.MM_p=new Array();var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
      	
      	if (a[i].indexOf("#")!=0)
      	{ 
      		d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
      	}
      }
  	}

  	function MM_findObj(n, d) 
  	{
    	var p,i,x;  
    	
    	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) 
    	{
      	d=parent.frames[n.substring(p+1)].document; 
      	n=n.substring(0,p);
      }
    
    	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    
    	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
  	}

  	function MM_swapImage() 
  	{
   	var i,j=0,x,a=MM_swapImage.arguments; 
   	
   	document.MM_sr=new Array; 
   	
   	for(i=0;i<(a.length-2);i+=3)
     
     	if ((x=MM_findObj(a[i]))!=null)
     	{
     		document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
     	}
  	}

	function tomoHelloSub(layerName,layerObj,layerNewObj,layerD)
	{
  		eval(layerObj+"+="+layerD);
  		layer_Time= 'document.all.' + layerName + '.style.HelloTime';

  		if(layerD>0)
  		{
   		if(eval(layerObj+">"+layerNewObj))
    		{
      		clearInterval(eval(layer_Time));
      		eval(layerObj+"="+layerNewObj);

      		if(document.HelloCom!="") eval(document.HelloCom);
    		}
  		}
  		else
  		{
   		if(eval(layerObj+"<"+layerNewObj))
   		{
      		clearInterval(eval(layer_Time));
      		eval(layerObj+"="+layerNewObj);

      		if(document.HelloCom!="") eval(document.HelloCom);
			}
  		}
	}

	function  tomoHello(layerName,tick,lenge,Command)
	{
  		if (!document.all && !document.layers) return;

  		if(lenge%2==0) layerD=10;
  		else layerD=-10;

		document.HelloCom=unescape(Command);

  		if(lenge<2)
  		{
    		MovePos=document.body.clientWidth;
    		layerObj= 'document.all.' + layerName + '.style.posLeft';
    		OrgPos=eval('document.all.' + layerName + '.clientWidth');
  		}
  		else
  		{
    		MovePos=document.body.clientHeight;
    		layerObj= 'document.all.' + layerName + '.style.posTop';
    		OrgPos=eval('document.all.' + layerName + '.clientHeight');
  		}
	  
  		layerNewObj='document.all.' + layerName + '.style.HelloPos';
  		layer_Time= 'document.all.' + layerName + '.style.HelloTime';
  		document.all[layerName].style.visibility="visible";

  		eval(layerNewObj+"="+layerObj);
  
  		if(lenge%2==0) eval(layerObj+"=-"+OrgPos);
  		else  eval(layerObj+"="+MovePos);
  
  		time=eval(layer_Time);
  
  		if(time!=null)  clearInterval(time);
  
  		time_id=setInterval("tomoHelloSub('"+layerName+"','"+layerObj+"','"+layerNewObj+"',"+layerD+")",tick);
  		
  		eval(layer_Time+"="+time_id);
	}

	function MM_showHideLayers() 
	{
  		var i,p,v,obj,args=MM_showHideLayers.arguments;
  		
  		for (i=0; i<(args.length-2); i+=3) 
  		
  		if ((obj=MM_findObj(args[i]))!=null) 
  		{ 
  			v=args[i+2];
    	
    		if (obj.style) 
    		{ 
    			obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; 
    		}
    	
    		obj.visibility=v; 
    	}
	}
// -->	
</SCRIPT>
Seguro que está fatal y que se puede hacer mejor y que funcione en ambos navegadores, pero yo no sé cómo hacerlo...

Gracias de antemano por vuestra ayuda.

Saludos, zLagos.

Última edición por zlagos; 03/07/2007 a las 11:42
  #2 (permalink)  
Antiguo 05/07/2007, 04:30
 
Fecha de Ingreso: julio-2007
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Una función que me funciona en ie y no en mozilla ¿Por qué?

¿De verdad que nadie me puede echar una mano?
  #3 (permalink)  
Antiguo 05/07/2007, 04:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 9 meses
Puntos: 1284
Re: Una función que me funciona en ie y no en mozilla ¿Por qué?

Hola:

La colección document.all no es estándar y mozilla no la reconoce (creo que las últimas versiones sí, así que donde tienes eso debes reemplazarlo por document.getElementById(¿...?)

Estas 2 líneas:

Código:
layerObj= 'document.all.' + layerName + '.style.posLeft';
OrgPos=eval('document.all.' + layerName + '.clientWidth');
Deben quedar así:

Código:
layerObj = document.getElementById(layerName).style.posLeft;
OrgPos = document.getElementById(layerName).clientWidth;
...y busca todas las coincidencias

Luego nos cuentas.

Saludos

Por cierto, Bienvenido a los foros
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 01:33.