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 объекты не используются много (когда-либо?) в любом случае; ты уверен, что это касается тебя?

Другие вопросы по тегам