Jsdom: 添加对 HTMLElement.dataset 的支持

创建于 2014-11-19  ·  14评论  ·  资料来源: jsdom/jsdom

目前,从 document.createElement() 返回的元素似乎没有任何 .dataset 属性,这是出乎意料的(https://html.spec.whatwg.org/#dom-dataset)。

best-fixed-by-webidl2js feature html living standard

最有用的评论

+1 真的需要这个功能

所有14条评论

请参阅#963 中的讨论; 在 V8 支持代理之前这是不可能的(不是非标准的Proxy.create ,而是new Proxy )。

+1 真的需要这个功能

非常惊讶这还没有在规范中实现。

为什么/lib/jsdom/browser/not-implemented.js不抛出错误?

对于那些想要这个的人,请使用 _element_.setAttribute("data-foo","bar");

对此有何更新?

男孩,我刚刚花了一个小时调试这个问题的鬼魂,其唯一的症状是该节点内存不足。 原来是由使用dataset而不是getAttribute引起的。 也许在此期间的帮助警告可以使人们免于相同的经历? :-/

@domenic据此,从节点 6 开始支持Proxy
您是否有一些关于如何实现这一点的指导方针,以便更容易做出贡献?

@idanen您将需要首先实现DOMStringMap接口,类型为<a i="8">HTMLElement</a>.prototype.dataset 。 实现DOMStringMap将需要更改webidl2js以通过代理支持遗留平台对象(如Web IDL中定义)。 Web IDL 规范包含关于每个内部方法应该做什么的详细说明。 (基本上,Web IDL 规范中的内容属于 webidl2js,HTML 标准中的内容属于 jsdom。)

如果您要为此工作,我还建议您将您的工作基于我的分支,该分支有望很快被合并。

@TimothyGu类似dom-token-list 的东西?

@idanen ,不,那是完全不同的东西。

我们在将测试套件迁移到 jsdom 时遇到了这个问题。 如果有帮助,这是我编写的代码模块,用于将dataset getter 和 setter 转换为使用getAttributesetAttributehttps ://gist.github.com/schreifels/

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Progyan1997 picture Progyan1997  ·  3评论

machineghost picture machineghost  ·  4评论

lehni picture lehni  ·  4评论

kentmw picture kentmw  ·  3评论

jhegedus42 picture jhegedus42  ·  4评论