DOM4: Устаревшие свойства и методы, что это значит?
"Предупреждение: В DOM Core 1, 2 и 3 Attr унаследован от Node. Это больше не относится к DOM4. Чтобы привести реализацию Attr в соответствие со спецификацией, ведется работа по изменению его, чтобы он больше не наследовал от Node Вы не должны использовать какие-либо свойства или методы Node для объектов Attr. Начиная с 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
Что это действительно означает для других методов, таких как атрибуты или дочерние узлы? Ссылка говорит, что это устарело, но они не дают никакой замены!
Это не рекомендуется для атрибута, но это также для узла?
Объект Attr: http://www.w3schools.com/jsref/dom_obj_attr.asp
Редактировать: nodeValue будет устаревшим ТОЛЬКО для атрибутов (Attr), так как Attr больше не будет наследовать от узла в DOM уровня 4:
Вот быстрый пример, который помог мне понять:
<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 ответ
Они говорят, что объекты, которые были Attr
экземпляры (например, такие как возвращенные Element.getAttributeNode()
), раньше имел свойства, которые он унаследовал от Node
,
Однако, поскольку это не так в DOM4, они пытаются удалить это наследство. Из-за этого, когда вы теперь получаете экземпляр Attr
объект, свойства, перечисленные в устаревшем списке, будут вести себя так, как они задокументированы.
Большой вопрос: он устарел для атрибута, но для узла тоже? Нет, они не устарели. Вы можете увидеть список свойств Node
имеет со своей страницы документации.
Attr
объекты не используются много (когда-либо?) в любом случае; ты уверен, что это касается тебя?