Foros del Web » Programando para Internet » Javascript »

Duda sobre eventos y carga en memoria

Estas en el tema de Duda sobre eventos y carga en memoria en el foro de Javascript en Foros del Web. Que tal compañeros, vengo solicitando su orientación, verán, tengo un sitio que funciona al 100% con Ajax/pushState y conexión "persistente" con NodeJS Mi primer duda ...
  #1 (permalink)  
Antiguo 15/06/2012, 15:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Duda sobre eventos y carga en memoria

Que tal compañeros, vengo solicitando su orientación, verán, tengo un sitio que funciona al 100% con Ajax/pushState y conexión "persistente" con NodeJS

Mi primer duda es la siguiente, como maneja javascript (o el navegador) los eventos de elementos eliminados del DOM, para que se entienda mejor, supongamos que agrego el evento 'click' a un boton, pero después de usarlo elimino dicho boton del DOM sin eliminar manualmente el evento, mi duda es, el evento sigue 'activo' aun cuando ya se ah eliminado el elemento o cuando se elimina del DOM se elimina el evento?, es preferible eliminar los eventos antes de eliminar el elemento del DOM?

Mi otra duda es relacionada, al no recargar la página el navegador no libera la memoria usada, y muchos eventos son mantenidos para el funcionamiento del sitio, eso puede repercutir en el navegado a nivel de respuesta cuando se mantiene navegando en el sitio por tiempos prolongados (teniendo en cuenta que cada petición se hace via Ajax y algunas otras via Websockets con NodeJS)?

agradezco cualquier comentario al respecto!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 15/06/2012, 15:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Duda sobre eventos y carga en memoria

Bueno, me respondo a la primera de mis dudas, realizando debug a mi código veo que los eventos son "persistentes", se mantienen en "memoria" aun cuando los items son eliminados, aun "peor", si por alguna razón el elemento eliminado es vuelto a cargar y se le asigna de nuevo el evento este se "suma" al evento anterior, por lo cual, tendríamos X eventos donde X son las veces que se le asocia un evento (el mismo) al elemento, por ejemplo, si se le asigna 3 veces el evento "click" a un boton, al dar click al boton será como si hubiéramos hecho 3 veces click, este comportamiento al menos es el que obtengo usando JQuery, por lo tanto mi segunda duda genera aun mas preocupación, por lo pronto tendré que administrar los eventos para eliminarlos cuando se elimina un elemento del DOM...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 15/06/2012, 21:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Duda sobre eventos y carga en memoria

Lee este artículo, quizás te sea de ayuda

http://www.etnassoft.com/2011/05/23/...as-de-memoria/

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 15/06/2012, 21:42
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Duda sobre eventos y carga en memoria

Muy interesante el artículo @emprear, pero eso me trae mas dudas, como poder implementar esto con JQuery, mi situación/problema es que uso selectores mmm digamos "generales" (por ejemplo $('#div a')) por lo cual no tengo forma de manipular los eventos por separado (por cada item al que se le asocia el evento), una de las formas que eh logrado administrar los eventos es usando el namespace de JQuery, por lo cual tengo mas control sobre que eventos están anclados sobre que elementos, por ejemplo, para el sitio en general uso 'click.general', para la zona donde constantemente esta cambiando el contenido por las peticiones ajax manejo 'click.dinamico', por lo tanto, cada vez que llamaré una petición ajax hago antes un unbind('click.dinamico'), así me aseguro que los eventos son borrados junto con los elementos, pero no se hasta que punto es optimo en cuestión de memoria...

Actualización: se me olvidaba comentar, que bajo JQuery 1.7.X eh leido que es mucho mas optimo (incluso se habla que a partir de dicha versión es la forma correcta) usar .on('evento',callback) para "anclar" eventos a elementos, y su contraparte sería .off('evento'), también leyendo eh visto que JQuery ayuda en evitar referencias circulares, pero no entiendo bien hasta que punto...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 15/06/2012 a las 21:49

Etiquetas: ajax, eventos, funcion, js, memoria, botones
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 14:37.