2012-05-08 9 views
7

"Advertencia: En DOM Core 1, 2 y 3, Attr heredado de Node. Este ya no es el caso en DOM4. Con el fin de llevar la implementación de Attr a las especificaciones, se está trabajando para cambiarlo a no hereda más de Node. No debería usar ninguna propiedad o método de nodo en objetos Attr. A partir de Gecko 7.0 (Firefox 7.0/Thunderbird 7.0/SeaMonkey 2.4), los que se eliminarán enviarán mensajes de advertencia a la consola. debe revisar su código en consecuencia. Consulte las propiedades y los métodos desaprobados para obtener una lista completa ".DOM4: propiedades y métodos obsoletos, ¿qué significa?

Desplazando la página hacia abajo, podemos ver reemplazos para nodeName y NodeValue, utilizando Attr.name y Attr.value.

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

Lo que significa realmente para otros métodos como atributos o childNodes? ¡La referencia dice que está en desuso, pero no dan ningún reemplazo!

esté en desuso para un atributo, sino que es para un nodo también?

Attr objeto: http://www.w3schools.com/jsref/dom_obj_attr.asp

Editar: nodeValue SOLO será obsoleto para atributos (Attr) desde Attr no heredarán desde un nodo más en DOM Nivel 4:

Aquí está un ejemplo rápido que me ayudó a entienden:

<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") 

Tal vez esto se evite la confusión a los demás cuando se accede a Atributos/nodos :)

+0

Creo que es seguro suponer que todo el objeto Attr estará en desuso, y no veo ningún motivo para usarlo. – jbabey

+0

@jbabey El objeto de atributo no estará obsoleto y, por el motivo de su uso, he actualizado mi publicación – baptx

Respuesta

6

Lo que están diciendo es que los objetos que fueron Attr instancias (p. como los devueltos por Element.getAttributeNode()), solía tener propiedades heredadas de Node.

Sin embargo, ya que este no es el caso en DOM4, que están tratando de eliminar esta herencia. Debido a esto, cuando obtiene ahora una instancia de un objeto Attr, las propiedades enumeradas en the deprecated list se comportarán tal como están documentadas.

La gran pregunta: ¿Es es obsoleto para un atributo, sino que es para un nodo también?: No, no están en desuso. Puede ver la lista de propiedades Node que tiene desde la página de documentación it's own.

Attr objetos no se usan mucho (alguna vez?) de todos modos; ¿estás seguro de que esto te preocupa?

+0

¿Cómo podemos saber si estamos usando Attr en lugar de Node? Cuando estoy usando document.getElementsByTagName ("script") [2] .attributes [0] .nodeValue Firebug console dice que el atributo "Uso de atributos 'nodeValue está en desuso. Use el valor en su lugar". Pero dices que nodeValue está en desuso solo para Attr, por eso estoy preguntando. – baptx

+1

Es un objeto Attr que estoy accediendo http://www.w3schools.com/jsref/prop_attr_name.asp por eso se pide .value en lugar de .nodeValue Creo – baptx

+1

Gracias @ Matt he entender su respuesta mejor después relectura – baptx

Cuestiones relacionadas