removeAttributeNS (W3C DOM Core method)

Spec
Version Depr. Static
DOM2 No No
Browser support (more…)
IE7 FF1.5+ SA3+ OP9+
None Buggy Full Buggy
Returns
void
Throws
NO_MODIFICATION_ALLOWED_ERR

Example

element.removeAttributeNS('http://www.w3.org/1999/xlink', 'href');

The example above removes the href attribute in the XLINK namespace from an element.

So if the element in that example referred to this XML:

<line xlink:href="http://www.brothercake.com/">brothercake</line>

Then the operation above would result in this:

<line>brothercake</line>

Arguments

namespace (DOMString) required

The namespaceURI of the attribute to remove. A value of null means no namespace.

name (DOMString) required

The localName of the attribute to remove.

Description

Remove an attribute with the specified name and namespace URI.

If the attribute has a specific default value in this document type, removing the attribute should replace it with the default value, having the same namespaceURI, localName and prefix.

Unlike Element nodes, Attr nodes do not inherit a namespace from the element they're attached to — if an attribute does not have an explicitly defined namespace then it simply has no namespace. See Attr for more details.

Compatibility

Internet Explorer Firefox Safari Opera
5.5 6.0 7.0 1.5 2.0 3.0 1.3 2.0 3.0 9.0 9.5
None None None Buggy Buggy Buggy Buggy Buggy Full Buggy Buggy

Internet Explorer doesn't implement this method (it returns undefined).

Opera returns null for attributes which are not defined, rather than an empty string.

In Safari 1.3 and 2 attributes inherit a namespace from their owning element, therefore this method matches attributes with no explicit namespace if the namespace argument matches the default.

Additionally, Safari 1.3 cannot see the xml prefix, so an xml:lang attribute will be treated as a lang attribute, and matched only if the namespace argument is http://www.w3.org/1999/xhtml (even when the document isn't any flavour of HTML); other XML attributes which have no HTML analog (such as xml:space) will be matched if the namespace argument is null or an empty string. In Safari 2 this is only the case for an xml:lang attribute — other XML attributes are matched correctly, although they are also still matched if the namespace argument is null or an empty string.

In Firefox and Opera an empty-string namespace is treated the same as a null namespace (ie. it's taken to mean no namespace, when it should be treated as a real namespace URI); only Safari 3 gets this right.

: Behavior in HTML

Since namespaces are an XML construct, it's only reasonable to judge the behavior of this method in terms of XML (either on HTML pages in XHTML mode1, or pure XML). The behavioral variations of browsers in HTML mode2 are documented here for interest and reference, but the support summary table above does not consider this behavior.

All supported browsers in HTML mode behave essentially the same as they do in XHTML mode, except that they don't recognise namespaces at all. (So Opera and Firefox only match explicitly defined attributes in no namespace if the namespace argument is null or an empty string; Safari 3 only matches explicitly defined attributes in no namespace if the namespace argument is null; Safari 1.3 and 2 only match explicitly defined attributes without a namespace if the namespace argument matches the default.)

Footnotes

1 On XHTML pages served as application/xhtml+xml.

2 On XHTML or HTML pages served as text/html.

User-contributed notes

There are no comments yet.

Related Products