2012-05-08 17 views
7

"Attenzione: in DOM Core 1, 2 e 3, Attr ereditato dal nodo. Questo non è più il caso in DOM4. Per portare l'implementazione di Attr su specifica, il lavoro è in corso per cambiarlo in no ereditare più a lungo dal nodo. Non si dovrebbero usare le proprietà oi metodi dei nodi sugli oggetti Attr. A partire da Gecko 7.0 (Firefox 7.0/Thunderbird 7.0/SeaMonkey 2.4), quelli che verranno rimossi verranno inviati messaggi di avviso alla console. dovrebbe rivedere il codice di conseguenza. Vedi Proprietà e metodi deprecati per un elenco completo. "DOM4: proprietà e metodi deprecati, cosa significa?

Scorrendo verso il basso nella pagina, possiamo vedere le sostituzioni per nodeName e NodeValue, utilizzando Attr.name e Attr.value.

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

Cosa significa veramente per gli altri metodi come attributi o childNodes? Il riferimento dice che è deprecato ma non danno alcuna sostituzione!

È deprecato per un attributo ma è anche per un nodo?

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

Edit: nodeValue sarà solo essere sconsigliato per gli attributi (attr) dal Attr non erediterà da un nodo più in DOM Level 4:

Ecco un rapido esempio che mi ha aiutato a capire:

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

Forse questo sarà evitare confusione con gli altri quando si accede attributi/Nodi :)

+0

Penso che sia sicuro assumere che l'intero oggetto Attr sarà deprecato e non vedo alcun motivo per utilizzarlo. – jbabey

+0

@jbabey L'oggetto attributo non sarà deprecato e per il motivo del suo utilizzo ho aggiornato il mio post – baptx

risposta

6

Quello che stanno dicendo è che gli oggetti che erano istanze Attr (ad es. come quelli restituiti da Element.getAttributeNode()), utilizzato per avere proprietà ereditate da Node.

Tuttavia, poiché questo non è il caso in DOM4, stanno cercando di rimuovere questa ereditarietà. Per questo motivo, quando ora si ottiene un'istanza di un oggetto , le proprietà elencate in the deprecated list si comporteranno come sono documentate.

La grande domanda: È deprecato per un attributo ma è anche per un nodo?: No, non sono deprecati. È possibile visualizzare l'elenco delle proprietà Node dalla pagina di documentazione it's own.

Attr oggetti non utilizzati molto (mai?) in ogni caso; sei sicuro che questo ti preoccupa?

+0

Come possiamo sapere se stiamo usando Attr al posto del nodo? Quando sto usando document.getElementsByTagName ("script") [2] .attributes [0] .nodeValue La console Firebug dice "Uso degli attributi" L'attributo nodeValue è obsoleto. Usa invece il valore. " Ma tu dici che nodeValue è deprecato solo per Attr, ecco perché lo sto chiedendo. – baptx

+1

È un oggetto Attr che sto accedendo a http://www.w3schools.com/jsref/prop_attr_name.asp è per questo che richiede .value invece di .nodeValue Penso che sia – baptx

+1

Grazie a @Matt ho capito meglio la tua risposta rilettura – baptx

Problemi correlati