-1

如果我添加这样的数据

function create(htmlStr){
    var frag = document.createDocumentFragment(),
    temp = document.createElement('div');
    temp.innerHTML = htmlStr;
    while (temp.firstChild){
        frag.appendChild(temp.firstChild);
        }
    return frag;
    }

var el=document.getElementsByClassName('b'+M)[0];

el.appendChild(create('<div data-what="whatinthewhatnow"></div>'));

我可以在“右键单击 > 检查元素控制台”中看到它。

这是正常的吗?我认为所有 data-* 属性都应该从用户视图中隐藏?

ps:我不能使用jquery.data(不允许:))。

4

1 回答 1

0

数据属性不会对代码检查器隐藏,但话又说回来,什么都没有 - 这是一个调试工具,所有用户都可以查看所有 JavaScript - 只需单击“查看源代码”,如有必要,点击任何链接并执行相同。

但是,数据属性正式不会影响 Web 浏览器,因此不会以任何其他方式呈现或处理它们,使它们对用户可见。

以下是w3 规范对自定义数据属性的说明(我添加的突出显示)

自定义数据属性旨在存储页面或应用程序私有的自定义数据,没有更合​​适的属性或元素。

这些属性不适用于独立于使用这些属性的站点的软件。

...这些属性旨在供站点自己的脚本使用,而不是可公开使用的元数据的通用扩展机制。

...用户代理不得从这些属性或值派生任何实现行为。用于用户代理的规范不得将这些属性定义为具有任何有意义的值。

JavaScript 库可以使用自定义数据属性,因为它们被认为是使用它们的页面的一部分。

此外,您可能想阅读John Resig 关于数据属性的帖子。它已经有 5 年历史了,并且已经过时了,因为他说“没有浏览器支持.dataset,现在它们都支持,但除此之外非常值得(而且很短)阅读。(如果你不知道,John Resig 是负责编写 jQuery。)

于 2013-10-07T19:50:37.013 回答