DOM4 удалены узлы атрибутов. Attr
больше не наследует от Node
и поэтому полностью изменен. Element
методы, которые извлекали или устанавливали узлы атрибутов.Как удаление узлов атрибутов влияет на атрибуты NamedNodeMap в DOM4?
И attributes
был удален с Node
по Element
. Теперь его определяется следующим образом:
interface Element : Node { [SameObject] readonly attribute NamedNodeMap attributes ; ... };
Атрибут attributes должен возвращать
NamedNodeMap
.
Но NamedNodeMap
не определяется DOM4! Вместо этого, ссылки на DOM Level 3 Core, который говорит, что его методы должны возвращать узлы:
interface NamedNodeMap { Node getNamedItem (in DOMString name); Node setNamedItem (in Node arg) raises(DOMException); Node removeNamedItem (in DOMString name) raises(DOMException); Node item (in unsigned long index); readonly attribute unsigned long length ; // Introduced in DOM Level 2: Node getNamedItemNS (in DOMString namespaceURI, in DOMString localName) raises(DOMException); // Introduced in DOM Level 2: Node setNamedItemNS (in Node arg) raises(DOMException); // Introduced in DOM Level 2: Node removeNamedItemNS (in DOMString namespaceURI, in DOMString localName) raises(DOMException); };
Кроме того, в DOM3, NamedNodeMap
общая структура данных, которые могут быть использованы для других вещей, чем атрибуты. Если attributes
работал потому, что он был определен как например:
атрибуты типа
NamedNodeMap
, только для чтенияNamedNodeMap, содержащий атрибуты данного узла (если это Element) или
null
иным ,
В принципе, теперь NamedNodeMap
возвращаемый attributes
больше не определен содержать атрибуты, его методы определены только в устаревшей спецификации, и предполагается, что возвращать узлы, но атрибуты больше не являются узлами.
Итак, ничего себе. На данный момент я не знаю, как должно работать attributes
.
Должно ли это работать? Если да, то как? Если нет, почему он не был удален?
[Кажется, я не единственный, кто это заметил) (https://github.com/w3c/dom/issues/4) – Oriol