Foros del Web » Programando para Internet » Javascript »

event.preventDefault() en firefox

Estas en el tema de event.preventDefault() en firefox en el foro de Javascript en Foros del Web. Me imagino que esta pregunta ya estara contestada, tambien la he encontrado en otras web, pero mi problema es como implantarla si lo tengo en ...
  #1 (permalink)  
Antiguo 03/04/2012, 18:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 7 meses
Puntos: 0
event.preventDefault() en firefox

Me imagino que esta pregunta ya estara contestada, tambien la he encontrado en otras web, pero mi problema es como implantarla si lo tengo en un archivo externo...

En chrome funciona bien porque no pide que tenga que pasar el evento explicitamente en cambio en firefox lo pide

Código HTML:
Ver original
  1. <a href="#"  onclick="ShowAjax('Usuario')"><span id="Usuario" class="ajaxlinks">Usuario</span></a>

Cuando se clickea en el enlace anterior por medio de la funcion Showajax me envia informacion del usuario

En otro archivo llamado funciones.js esta la funcion Showajax

Código Javascript:
Ver original
  1. function ShowAjax(usuario) {
  2.         event.preventDefault()
  3. .
  4. .
  5. .
  6. .

En chrome como ya digo funciona bien pero en firefox no.. que tengo que modificar de la funcion
  #2 (permalink)  
Antiguo 03/04/2012, 18:51
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: event.preventDefault() en firefox

¡buenas!
el uso correcto de event es muy distinto a como lo estás haciendo. el hecho de que chrome lo haga no significa que así debe ser. resulta que chrome se esta pareciendo a iexplorer. por ejemplo, chrome adopta la característica de crear variables automáticamente por cada elemento con ID. la variable global event es otra de las características adoptada por iexplorer. debido a la forma que declaras el evento, tienes que pasar explícitamente el objeto event a la función.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 03/04/2012, 19:03
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: event.preventDefault() en firefox

Cita:
Iniciado por zerokilled Ver Mensaje
¡buenas!
el uso correcto de event es muy distinto a como lo estás haciendo. el hecho de que chrome lo haga no significa que así debe ser. resulta que chrome se esta pareciendo a iexplorer. por ejemplo, chrome adopta la característica de crear variables automáticamente por cada elemento con ID. la variable global event es otra de las características adoptada por iexplorer. debido a la forma que declaras el evento, tienes que pasar explícitamente el objeto event a la función.
No tengo ni idea de como hacer eso
  #4 (permalink)  
Antiguo 03/04/2012, 19:25
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: event.preventDefault() en firefox

¡simple! agrega un nuevo parámetro a la función, puede ser con el mismo nombre (event), así te evitas cambiar la variable dentro del cuerpo de la función. luego, a la invocación de la función (en el atributo onclick) le agregas el argumento del objeto Event. puede ser arguments[0] o event.

estoy casi seguro que te quedará una confusión respecto al argumento event dentro del atributo onclick. sucede que los atributos relacionados a eventos se transforman como funciones cuando el navegador analiza el código html. por otra parte, cuando un evento ocurre el navegador crea un objeto tipo Event – en realidad puede ser de otro tipo más complejo, pero Event es el objeto más genérico del cual heredan todos los demás – y lo propaga por el DOM. cuando un listener lo captura se lo pasa al handler como argumento. no recuerdo si es parte del estándar o si es dependiente de cada implementación, automáticamente el nombre del argumento es event. o sea, que cuando el navegador analiza el atributo crea una función tal que function(event){ ... }. por eso puedes usar event dentro del atributo onclick. nótese que no se está refiriendo a una variable global – como el caso de iexplorer ya que este tiene un modelo de evento distinto – sino que hace referencia a la variable local de esa función creada por el navegador. por eso es que tienes que pasarle el objeto a tu función.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 04/04/2012, 01:40
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: event.preventDefault() en firefox

creo que estás enfocando mal el problema el preventDefault se hace hacia el propio evento no a la función, ejemplo:
Código Javascript:
Ver original
  1. .onclick(event, usuario)
  2. {
  3. event.preventDefault();
  4. ShowAjax(usuario);
  5. }

lo que no se es si sólo de jquery
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #6 (permalink)  
Antiguo 04/04/2012, 04:48
 
Fecha de Ingreso: octubre-2011
Mensajes: 45
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: event.preventDefault() en firefox

Cita:
Iniciado por zerokilled Ver Mensaje
¡simple! agrega un nuevo parámetro a la función, puede ser con el mismo nombre (event), así te evitas cambiar la variable dentro del cuerpo de la función. luego, a la invocación de la función (en el atributo onclick) le agregas el argumento del objeto Event. puede ser arguments[0] o event.

estoy casi seguro que te quedará una confusión respecto al argumento event dentro del atributo onclick. sucede que los atributos relacionados a eventos se transforman como funciones cuando el navegador analiza el código html. por otra parte, cuando un evento ocurre el navegador crea un objeto tipo [url=https://developer.mozilla.org/en/DOM/event]Event[/url] – en realidad puede ser de otro tipo más complejo, pero Event es el objeto más genérico del cual heredan todos los demás – y lo propaga por el DOM. cuando un listener lo captura se lo pasa al handler como argumento. no recuerdo si es parte del estándar o si es dependiente de cada implementación, automáticamente el nombre del argumento es event. o sea, que cuando el navegador analiza el atributo crea una función tal que function(event){ ... }. por eso puedes usar event dentro del atributo onclick. nótese que no se está refiriendo a una variable global – como el caso de iexplorer ya que este tiene un modelo de evento distinto – sino que hace referencia a la variable local de esa función creada por el navegador. por eso es que tienes que pasarle el objeto a tu función.
Cita:
Iniciado por ZiTAL Ver Mensaje
creo que estás enfocando mal el problema el preventDefault se hace hacia el propio evento no a la función, ejemplo:
Código Javascript:
Ver original
  1. .onclick(event, usuario)
  2. {
  3. event.preventDefault();
  4. ShowAjax(usuario);
  5. }

lo que no se es si sólo de jquery
Gracias a los 2, ya esta arreglado. Me funciona en chrome y firefox.

Una conclusion mas para cerrar el tema.. deberia de probar la web primero con chrome o firefox? los dos a la vez?
  #7 (permalink)  
Antiguo 04/04/2012, 07:01
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: event.preventDefault() en firefox

@zital,
debe ser una cuestión de jquery ya que este tiene la costumbre de cambiar las formas de como se hace habitualmente. en javascript puro tendrías que pasar el objeto a tu función. en jquery supongo lo que hace es crear una función adicional además de tu handler.

@shekel,
cada cual tiene sus preferencias de en cuál navegador comenzar. si quieres algo más cercano al estándar, probablemente sea mejor comenzar por firefox.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: ajax, firefox, funcion, js
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 04:23.