Foros del Web » Programando para Internet » Javascript »

problema onclick="load(this); en firefox

Estas en el tema de problema onclick="load(this); en firefox en el foro de Javascript en Foros del Web. Hola Tengo un problema con la propiedad onclick que en internet explorer me funciona perfectamente y en firefox tengo k hacer doble click para que ...
  #1 (permalink)  
Antiguo 14/01/2008, 05:12
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
problema onclick="load(this); en firefox

Hola

Tengo un problema con la propiedad onclick que en internet explorer me funciona perfectamente y en firefox tengo k hacer doble click para que funcione

<a class='gtdOnMouseOutSub' onclick="load(this);changeBack1();submenu='3';" onmouseover="this.className= 'gtdOnMouseOverSub'" onmouseout="this.className= 'gtdOnMouseOutSub'" name="index.php?option=com_content&task=view&id=19 5&Itemid=29&frame=yes">Política de Medio Ambiente</a>

No se si el problema es que no acepta el this,alguien podria ayudarme?

Un Saludo.
Muchas Gracias.
  #2 (permalink)  
Antiguo 14/01/2008, 05:25
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: problema onclick="load(this); en firefox

No estaría de más que pusieras la función load esa a la que llamas.

Además, en Firefox, podrías usar Firebug para ver exactamente qué ocurre cuando haces click.

Ah, y el valor que le pones a name no me parece una idea demasiado buena.
  #3 (permalink)  
Antiguo 14/01/2008, 05:28
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 5 meses
Puntos: 24
Re: problema onclick="load(this); en firefox

Intenta preguntar en el foro correcto. En éste caso en el de Javascript.
De momento comprueba si en la consola de javascript aparece algun error. O pon algunos "alert()" dentro de las funciones para ver si al menos pasa por ellas o no.
__________________
Grupos de Música
Pop Music Stars
  #4 (permalink)  
Antiguo 14/01/2008, 05:32
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Vale lo pongo en el foro correcto.
Un Saludo.

Muchas Gracias.
  #5 (permalink)  
Antiguo 14/01/2008, 05:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: problema onclick="load(this); en firefox

Hola:

Acabo de reportar el mensaje, así que no tardarán en moverlo... pero la respuesta es que this lo soportan todos los navegadores estándar... el problema puede estar en el "name"... a veces explorer confunde los atributos name e id... pon lo que hace tu función load y veremos como ayudarte.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 14/01/2008, 05:51
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Hola.

Aqui pongo la funcion load.

function load(e){

var ad = false;

for (var i = 0; i < listAdds.length; i++) {
if(listAdds[i] == e.name) ad = true;
}
if(!ad){
addEvent(e,'click',presionEnlace,false);
listAdds[added]= e.name;
added++;
}
}

Saludos
Muchas Gracias.
  #7 (permalink)  
Antiguo 14/01/2008, 07:22
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: problema onclick="load(this); en firefox

(espero que trasladen el tema al foro de Javascript, pero mientras tanto...)

¿Qué es lo que se supone que quieres hacer, djskpa? Quiero decir, cuando dices que tienes que hacer doble click en Fx "para que funcione", ¿a qué te refieres con que funcione?

Lo digo porque según ese código es normal que no funcione como esperas.

Según lo que pones, al hacer click en el enlace, que en realidad no es un enlace sino sólo un marcador, se llama la función pasándole el objeto <a> del documento. La función lo que hace es:

Si ya hemos pulsado el enlace antes, no hace nada. Y si es la primera vez, lo que hace es apuntar que lo acabamos de pulsar y asociarle un evento más al click. Pero no llama a nada visible, ni ocurre nada más. En el siguiente click, se ejecutará presionEnlace (probablemente), pero en este primer click no debería ocurrir nada más.

De todos modos creo que es importante que expliques qué es lo que quieres hacer porque el comportamiento de esa función probablemente no es predecible para todos los navegadores. El problema es que estás asociando una función (presionEnlace) a un evento (click) justo al producirse ese evento. Entonces... ¿se debe ejecutar esta vez que se ha producido o se debe ejecutar en el próximo evento de este tipo?

No creo que sea buena idea hacer esto y esperar que se comporte de una forma particular.
  #8 (permalink)  
Antiguo 14/01/2008, 08:14
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Hola ver si me explico.

Lo que me pasa que esa funcion controla lo que tu has dicho y va asociada a un submenu a la izquierda de la pantalla que en función de cual de ellos piques llama a una función "ChangeBack1" o "ChangeBack2" que lo que hacen es cambiar el fondo de la pantalla.

Ahora en internet explorer al hacer click en uno de los submenus ya hace el cambio de fondo pero en firefox necesita hacer doble click para que cambie el fondo.

No se si em expliqué.

Eso tiene que ser que firefox no debe entender o algo de la función o algo de la llamada.

Un Saludo.
Muchas Gracias.
  #9 (permalink)  
Antiguo 14/01/2008, 08:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema onclick="load(this); en firefox

Tema trasladado a Javascript.

Por favor publica en los foros correctos.
  #10 (permalink)  
Antiguo 14/01/2008, 08:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: problema onclick="load(this); en firefox

Hola:

Siguen siendo escasos los datos... ¿Crees que será fácil adivinar el contenido de la función addEvent?... espero que no exista ninguna línea "getElementById()" porque hubieramos ganado tiempo si hubieras visto mi primer mensaje

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 14/01/2008, 09:17
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Hola.

En la función addevent no existe ninguna linea con "getElementById()" :

function addEvent(elemento,nomevento,funcion,captura)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+nomevento,funcion);
return true;
}
else
if (elemento.addEventListener)
{
elemento.addEventListener(nomevento,funcion,captur a);
return true;
}
else
return false;
}
Un Saludo.
Gracias.
  #12 (permalink)  
Antiguo 14/01/2008, 09:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: problema onclick="load(this); en firefox

Hola:

Sigues soltando código con "cuentagotas" (no pensamos robarte nada... )

La verdad es que no sé quién creó ese código, pero te recomendaría que buscases alguna alternativa porque me parece muy rebuscado... verás estás usando un click para añadir a ese mismo click otro "comportamiento"... entonces lo normal es que ese nuevo comportamiento empiece a ser funcional a partir del segundo click... si solo quieres cambiar algunos fondos no es necesario añadir eventos dinámicamente.

Si tienes los códigos completos será mejor ayudarte, pero tal vez sea mejos empezar desde cero (ya me parece mucho más complejo de lo que suelo implementar)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 14/01/2008, 09:37
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: problema onclick="load(this); en firefox

djskpa, intentemos acotar un poco el problema. Tenemos la función load() y las funciones ChangeBack1() y 2, ¿no? Lo que no te funciona, por lo que dices, parece más bien que es ChangeBack1() (o 2). Quiero decir, ¿por qué dices que lo que no funciona es la llamada con this? La función load no tiene ningún efecto visible. ¿Has probado a ejecutar sólo una y sólo la otra? ¿Has probado a usar Firebug? Pon el código de ChangeBack1(), por favor.
  #14 (permalink)  
Antiguo 14/01/2008, 09:43
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Hola.
Aqui está la función:

function changeBack3(){

var elem = document.getElementById("imageMenu");
elem.className = "imageMenuC1";
elem.style.position="relative";
elem.style.top="1px";


elem = document.getElementById("img1");
elem.src = "images/gtd/portada/ILLU_CALIDAD_02.gif";
elem.style.left="-3px";
elem.style.top="-1px";


elem = document.getElementById("img2");
elem.src= "images/gtd/portada/nada.gif";

elem = document.getElementById("midImage");
elem.width = "301px";


elem = document.getElementById("detalles");
elem.style.position="relative";
elem.style.left="0px";
elem.name="menujsprincipal";


elem = document.getElementById("divFrame");
elem.width = "425px";


}

Saludos.
Muchas Gracias.
  #15 (permalink)  
Antiguo 16/01/2008, 02:45
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: problema onclick="load(this); en firefox

Así en principio, ahora mismo, no veo nada particularmente malo.

¿Has comprobado si en Firefox sale algún error en la consola Javascript? Herramientas -> Consola de Errores.
  #16 (permalink)  
Antiguo 16/01/2008, 03:49
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: problema onclick="load(this); en firefox

Hola.

Ya lo solucioné,lo que pasaba era que añadia el evento pero no lo cargaba al final he hecho una función para cada navegador y listo.

Aqui dejo el código por si le sirve a alguien:

<?php if($browser == 'Netscape') {?>
function load(e){


addEvent(e,'click',presionEnlace,false);
listAdds[added]= e.name;
added++;
cargarPaginas(e.name);

}

var submenu="";

<?php } else {?>
function load(e){

var ad = false;

for (var i = 0; i < listAdds.length; i++) {
if(listAdds[i] == e.name) ad = true;
}
if(!ad){
addEvent(e,'click',presionEnlace,false);
listAdds[added]= e.name;
added++;
}
}

var submenu="";

<?php }?>

Ya podeis cerrar el hilo.

Un Saludo.
Muchas Gracias.
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 17:07.