Foros del Web » Creando para Internet » Diseño web »

problema con event target en firefox

Estas en el tema de problema con event target en firefox en el foro de Diseño web en Foros del Web. Buenos días, tengo el siguiente codigo que me funciona de perlas en ie pero no consigo que funcione en firefox, y sospecho que tiene algo ...
  #1 (permalink)  
Antiguo 15/10/2011, 01:57
 
Fecha de Ingreso: junio-2007
Mensajes: 16
Antigüedad: 16 años, 10 meses
Puntos: 0
problema con event target en firefox

Buenos días,

tengo el siguiente codigo que me funciona de perlas en ie pero no consigo que funcione en firefox, y sospecho que tiene algo que ver con la propiedad target.

// aqui creo una tabla dinamica y le voy añadiendo los eventos en tiempo de ejecucion a los elementos TR: (pongo todo el codigo por si a alguien le sirve)

function MostrarDataGrid(cols,rows,size)
{


// obtenemos acceso a la tabla por su ID
var TABLE = document.getElementById("dataGrid");
//TABLE.style.border = '1px outset #D3D3D3';


// obtenemos acceso a la fila cabecera por su ID
var TROW = document.getElementById("header");
TROW.style.backgroundColor= '#365999';


//Creamos la cabecera
for(i=0;i<columnas.length;++i)
{

celda=TROW.insertCell(-1);
celda.id=columnas[i];
celda.style.width=''+tamano[i]+'px';
celda.innerHTML = columnas[i];
celda.style.color='#FFFFFF';


}

//Añadimos los registros
for(i=0;i<valores.length;++i)
{
//Creamos fila
var newRow = TABLE.insertRow(-1);
newRow.id=valores[i][0];
newRow.style.backgroundColor= '#7B96C8';


AttachEvent(newRow,"mouseover",function(){atenderE ventoOver()});
AttachEvent(newRow,"mouseout",function(){atenderEv entoOut()});
AttachEvent(newRow,"click",function(){atenderEvent oClick()});


//añadimos celdas con valores
for(j=0;j<valores[0].length;++j)
{
celda=newRow.insertCell(-1);
celda.id=columnas[j];
celda.style.width=''+tamano[j]+'px';
celda.innerHTML = valores[i][j];
celda.style.color='#FFFFFF';

}

}



//Aqui distingo entre i.e. y firefox para llamar a sus respectivos métodos


function AttachEvent(obj,evt,fnc,useCapture)
{
if (!useCapture) useCapture=false;
if (obj.addEventListener)
return obj.addEventListener(evt,fnc,false);
else (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);

}


// y por último la función que trata el evento (pongo solo el de MouseOver)

function atenderEventoOver(e)
{

// si aqui pongo un alert para monitorizar en firefox si me muestra el //contenido

var targ;
if (!e) var e = window.event; // aqui he probado tambien a poner
//var e=window.event? event : e ; pero tampoco funciona

if (e.target) targ = e.target;

//aqui en firefox ya no funciona el alert, por lo que el fallo está en estas //líneas superiores
else if (e.srcElement) targ = e.srcElement;



targ.parentNode.style.backgroundColor= '#365999';
targ.parentNode.style.cursor= 'hand';

}

Un poco de ayuda se agradece ya que me esta esta obsesionando y retrasa mi proyecto Muchas gracias
  #2 (permalink)  
Antiguo 16/10/2011, 12:42
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: problema con event target en firefox

El problema está acá:

function(){atenderEventoOver()}

No sé porque tienes que poner una función envolviendo a la otra, claro, se ejecuta, pero esta otra función (me refiero a atenderEventoOver) no recibe el objeto event, debes poner solamente esto:

AttachEvent(newRow,"mouseover", atenderE ventoOver);

De este modo si se le pasará el objeto event. Hacer lo que tú haces solo sirve cuando tienes que enviarle algún otro parámetro. Bueno, ahora bien, talvez te preguntes entonces por qué en I.E. si funciona, la respuesta está aquí:

if (!e) var e = window.event; /

Eso solo funciona en I.E. y todo el tiempo ocurre porque nunca le pasas el objeto event, bueno eso sería todo.Suerte!
  #3 (permalink)  
Antiguo 21/10/2011, 17:25
 
Fecha de Ingreso: junio-2007
Mensajes: 16
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con event target en firefox

Muchas gracias por la aclaración, eres un crack!

Etiquetas: event, firefox, target
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 09:28.