如果我添加这样的数据
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>'));
我可以在'右键单击&gt;中看到它检查元素控制台'。
这是正常的我认为所有data- *属性都被认为是隐藏在用户视图之外的吗?
ps:我不能使用jquery.data(不允许:))。
答案 0 :(得分:0)
数据属性不会从代码检查器隐藏,但是再一次,没有什么 - 这是一个调试工具,并且所有用户都可以看到所有JavaScript - 只需单击“查看源”,并在必要时跟随任何链接和做同样的事情。
但是,数据属性正式无法影响Web浏览器,因此不会以任何其他方式呈现或处理它们,使其对用户可见。
以下是w3 specification对自定义数据属性的说法(由我添加突出显示)
自定义数据属性旨在将自定义数据存储为页面或应用程序的私有数据,而没有更合适的属性或元素。
这些属性不适用于独立于使用属性的网站的软件。
...这些属性旨在供站点自己的脚本使用,而不是公共可用元数据的通用扩展机制。
... 用户代理不得从这些属性或值派生任何实现行为。用于用户代理的规范不得将这些属性定义为具有任何有意义的值。
JavaScript库可能会使用自定义数据属性,因为它们被认为是使用它们的页面的一部分。
另外,您可能需要阅读John Resig's post about the data attributes。它已经过了5年,并且过时了,因为他说“没有浏览器支持.dataset
,现在他们都这样做了,但是其他一些非常有价值的(和简短的)阅读。(如果你不知道,John Resig是负责编写jQuery的人。)