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).
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
).
Parece que está chegando! https://twitter.com/s3ththompson/status/687301453761806336
+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.
Comentários muito úteis
+1 Realmente preciso desse recurso