Jsdom: Adicionar suporte para HTMLElement.dataset

Criado em 19 nov. 2014  ·  14Comentários  ·  Fonte: jsdom/jsdom

Atualmente, parece que os elementos retornados de document.createElement() não possuem nenhuma propriedade .dataset, o que é inesperado (https://html.spec.whatwg.org/#dom-dataset).

best-fixed-by-webidl2js feature html living standard

Comentários muito úteis

+1 Realmente preciso desse recurso

Todos 14 comentários

Por favor, veja a discussão em #963; isso não é possível até que o V8 suporte proxies (e não o Proxy.create fora do padrão, mas new Proxy ).

+1 Realmente preciso desse recurso

Muito surpreso que isso ainda não tenha chegado às especificações.

Por que /lib/jsdom/browser/not-implemented.js não gera erro?

Para aqueles que desejam isso, use _element_.setAttribute("data-foo","bar");

Alguma atualização sobre isso?

Rapaz, acabei de passar uma hora depurando esse fantasma de um problema cujo único sintoma era que o nó estava ficando sem memória. Acabou sendo causado pelo uso de dataset em vez de getAttribute . Talvez um aviso de ajuda nesse meio tempo salvaria as pessoas da mesma experiência? :-/

@domenic de acordo com isso , Proxy é suportado desde o Node 6.
Você tem algumas diretrizes sobre como deseja implementar isso para que seja mais fácil contribuir?

@idanen Você vai querer primeiro implementar a interface DOMStringMap , o tipo de <a i="8">HTMLElement</a>.prototype.dataset . A implementação DOMStringMap exigiria alterações em webidl2js para dar suporte a objetos de plataforma herdados (conforme definido em Web IDL ) por meio de proxies. A especificação Web IDL contém instruções detalhadas sobre o que cada método interno deve fazer exatamente. (Basicamente, coisas na especificação Web IDL vão para webidl2js, coisas no HTML Standard vão para jsdom.)

Se você trabalhar nisso, também recomendo basear seu trabalho no meu branch , que esperamos que seja mesclado em breve.

@TimothyGu Algo como dom-token-list ?

@idanen , não, isso é algo totalmente diferente.

Encontramos esse problema ao migrar nosso conjunto de testes para jsdom. Se for útil, aqui está o codemod que escrevi para converter getters e setters dataset para usar getAttribute e setAttribute : https://gist.github.com/schreifels/ eb6764b0435d9d830652cee7cb1132c1.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

camelaissani picture camelaissani  ·  4Comentários

lehni picture lehni  ·  4Comentários

jhegedus42 picture jhegedus42  ·  4Comentários

cg433n picture cg433n  ·  3Comentários

vsemozhetbyt picture vsemozhetbyt  ·  4Comentários