Datepicker Memory Leak

Abierto
#2,280 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
javascript, jquery
Área
frontend

Línea de trabajo

Inspecciona ui/widgets/datepicker.js alrededor de la línea 163 y sigue la ruta de destrucción descrita en el issue. Revisa las pruebas unitarias que dependen de dpDiv y reproduce la secuencia hide-then-destroy. Se considera terminado cuando la UI de datepicker ya no se conserva después de la destrucción y se han abordado las pruebas afectadas y el comportamiento de uso documentado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Behavior shared with 1.12 Comp: Datepicker

Building off #2268, there is a problem when destroying the datepicker where it doesn’t completely get removed from memory. This pull request, https://github.com/jquery/jquery-ui/commit/817ce38, removes the instance reference but the actual UI reference is tied to

https://github.com/jquery/jquery-ui/blob/54f96eea31b21d9ecb00912261df3e5aaebf8cce/ui/widgets/datepicker.js#L163

When the widget is destroyed, the datepicker UI element remains in memory preventing it from closing. https://github.com/jquery/jquery-ui/pull/2268 patches this issue by hiding the component, however dpDiv is still in memory. One solution could be to remove dpDiv from the instance and then set both _curInst = null and this.dpDiv = null.
https://github.com/jquery/jquery-ui/pull/2268/commits/5e4f1b86296c5a977abc7efaff671ea9004d4d37
However, many unit tests will break because they rely on dpDiv to still exist in memory, requiring the datepicker to be recreated for each test. There is also a problem that many developers rely on hiding the datepicker before destroying it $.datepicker("hide").destroy("destroy") which will fail because dpDiv will be null.

Lenguaje dominante
JavaScript
Estrellas
11.3k
Forks
5.2k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de jquery/jquery-ui

Todos los issues de jquery/jquery-ui

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.