Jsdom: Agregar soporte para HTMLElement.dataset

Creado en 19 nov. 2014  ·  14Comentarios  ·  Fuente: jsdom/jsdom

Actualmente, parece que los elementos devueltos por document.createElement() no tienen ninguna propiedad .dataset, lo cual es inesperado (https://html.spec.whatwg.org/#dom-dataset).

best-fixed-by-webidl2js feature html living standard

Comentario más útil

+1 Realmente necesito esta característica

Todos 14 comentarios

Consulte la discusión en el n.º 963; esto no es posible hasta que V8 admita proxies (y no el Proxy.create no estándar, sino new Proxy ).

+1 Realmente necesito esta característica

Muy sorprendido de que esto no haya llegado a la especificación, todavía.

¿Por qué /lib/jsdom/browser/not-implemented.js no arroja un error?

Para aquellos que quieran esto, use _element_.setAttribute("data-foo","bar");

¿Alguna actualización sobre esto?

Chico, acabo de pasar una hora depurando este fantasma de un problema cuyo único síntoma era que el nodo se estaba quedando sin memoria. Resultó ser causado por el uso de dataset en lugar de getAttribute . ¿Quizás una advertencia de ayuda mientras tanto salvaría a la gente de la misma experiencia? :-/

@domenic de acuerdo con esto , Proxy es compatible desde el Nodo 6.
¿Tiene algunas pautas sobre cómo desea implementar esto para que sea más fácil contribuir?

@idanen Primero querrá implementar la interfaz DOMStringMap , el tipo de <a i="8">HTMLElement</a>.prototype.dataset . La implementación DOMStringMap requeriría cambios en webidl2js para admitir objetos de plataforma heredados (como se define en Web IDL ) a través de Proxies. La especificación Web IDL contiene instrucciones detalladas sobre lo que debe hacer exactamente cada método interno. (Básicamente, las cosas en la especificación Web IDL van a webidl2js, las cosas en el estándar HTML van a jsdom).

Si tuviera que trabajar en esto, también le recomiendo basar su trabajo en mi rama , que con suerte se fusionará pronto.

@TimothyGu ¿ Algo así como dom-token-list ?

@idanen , no, eso es algo completamente diferente.

Nos encontramos con este problema al migrar nuestro conjunto de pruebas a jsdom. Si es útil, aquí está el codemod que escribí para convertir dataset getters y setters para usar getAttribute y setAttribute : https://gist.github.com/schreifels/ eb6764b0435d9d830652cee7cb1132c1.

¿Fue útil esta página
0 / 5 - 0 calificaciones