DOM4:不推荐使用的属性和方法,它是什么意思?

时间:2012-05-08 13:06:00

标签: javascript html dom deprecated dom4

  

"警告:在DOM Core 1,2和3中,Attr继承自Node。在DOM4中不再是这种情况。为了使Attr的实现符合规范,正在进行将其更改为不再继承Node的工作。您不应该在Attr对象上使用任何Node属性或方法。从Gecko 7.0(Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4)开始,将要删除的那些输出警告消息到控制台。您应该相应地修改您的代码。有关完整列表,请参阅不推荐使用的属性和方法。"

向下滚动页面,我们可以看到nodeName和NodeValue的替换,使用Attr.name和Attr.value。

https://developer.mozilla.org/en/DOM/Attr#Deprecated_properties_and_methods

对于其他方法(如属性或childNodes),它真正意味着什么? 该参考文献表示它已被弃用,但他们没有给予任何替代!

对于属性不推荐使用它,但它也适用于Node吗?

Attr对象:http://www.w3schools.com/jsref/dom_obj_attr.asp

编辑:对于Attributes(Attr),只能弃用nodeValue,因为Attr将不再在DOM Level 4中从Node继承:

这是一个帮助我理解的简单例子:

<div id="myAttribute">myTextNode</div>

var myDiv = document.getElementById("myAttribute");

// If you want to get "myAttribute" from div tag

alert(myDiv.attributes[0].value);
// Correct way to get value of an attribute (displays "myAttribute")
alert(myDiv.attributes[0].nodeValue);
// Working too but deprecated method for Attr since it doesn't inherit from Node in DOM4 (.nodeValue is specific to a Node, not an Attribute)

// If you want to get "myTextNode" from div tag

alert(myDiv.childNodes[0].value);
// Not working since .value is specific to an attribute, not a Node (displays "undefined")
alert(myDiv.childNodes[0].nodeValue);
// Working, .nodeValue is the correct way to get the value of a Node, it will not be deprecated for Nodes! (displays "myTextNode")

这可能会在访问属性/节点时避免与其他人混淆:)

1 个答案:

答案 0 :(得分:6)

他们所说的是Attr个实例的对象(例如Element.getAttributeNode()返回的对象),曾经拥有从Node继承的属性。

但是,因为在DOM4中不是这种情况,所以他们试图删除这种继承。因此,当您现在获得Attr对象的实例时,the deprecated list中列出的属性将按其记录的方式运行。

最大的问题:对于属性是否已弃用,但对于Node也是如此?:不,它们不会被弃用。您可以在it's own文档页面中看到Node属性列表。

无论如何,

Attr个对象使用不多(永远?);你确定这件事与你有关吗?