<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>テスト・ケース</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>Index of /~wakaba/test/web/dom/element/set-attr</cite> (<time>2012-12-20 15:07:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://suika.fam.cx/~wakaba/test/web/dom/element/set-attr/">http://suika.fam.cx/~wakaba/test/web/dom/element/set-attr/</anchor-external></li></ul></refs></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM水準3</anchor>で、自分自身を置換しようとしても効果はないと明記されました。</p><p>しかし、その場合何が返されるのかは不明です。</p></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM3</anchor> は他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節点</anchor>を指定したら <code class="DOMe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WRONG_DOCUMENT_ERR</anchor></code> になるとしていますが、
実際には自動的に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">adopt</anchor> されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> の場合には自分自身が返されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> ではおそらく <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNode</anchor></code> と <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNodeNS</anchor></code>
は同じで、 <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">namespaceURI</anchor></code> と <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">localName</anchor></code>
でどれが置き換えられるか決まります。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNode</anchor></code>
は <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttribute</anchor></code> と同じように <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QName</anchor> が最初に一致した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節点</anchor>を置き換えるようで、
その結果不整合が生じることもあるようです。 <time>2012-12-20T15:12:49.500Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非推奨</anchor>との警告が出ます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">Define getAttributeNode<strong></strong>[<strong></strong>NS<strong></strong>]<strong></strong> and removeAttributeNode · 5a881d9 · whatwg/dom</cite>
( (<time>2014-08-21 12:51:51 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/5a881d9b5f328f8e32f0fa8e73b4e8799772cb0c">https://github.com/whatwg/dom/commit/5a881d9b5f328f8e32f0fa8e73b4e8799772cb0c</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite xml:lang="en">Define Element.prototype.setAttributeNode<strong></strong>[<strong></strong>NS<strong></strong>]<strong></strong>, removeAttributeNode, Name... · 12d0114 · whatwg/dom</cite>
( (<time>2014-08-21 13:32:48 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b">https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="en">Define Element.prototype.setAttributeNode<strong></strong>[<strong></strong>NS<strong></strong>]<strong></strong>, removeAttributeNode, Name... · 12d0114 · whatwg/dom</cite>
( (<time>2014-08-21 13:32:56 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b">https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cbody%3E%0A%3Cscript%3E%0A%20%20var%20el%20%3D%20document.createElement%20(%27a%27)%3B%0A%20%20el.setAttributeNS%20(%22a%22%2C%20%22a%3Ahref%22%2C%20%22foo%22)%3B%0A%20%20var%20attr%20%3D%20document.createAttributeNS%20(%22a%22%2C%20%27b%3Ahref%27)%3B%0A%20%20attr.value%20%3D%20%22bar%22%3B%0A%20%20el.setAttributeNode%20(attr)%3B%0A%20%20document.body.appendChild%20(el)%3B%0A%3C%2Fscript%3E">http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cbody%3E%0A%3Cscript%3E%0A%20%20var%20el%20%3D%20document.createElement%20(%27a%27)%3B%0A%20%20el.setAttributeNS%20(%22a%22%2C%20%22a%3Ahref%22%2C%20%22foo%22)%3B%0A%20%20var%20attr%20%3D%20document.createAttributeNS%20(%22a%22%2C%20%27b%3Ahref%27)%3B%0A%20%20attr.value%20%3D%20%22bar%22%3B%0A%20%20el.setAttributeNode%20(attr)%3B%0A%20%20document.body.appendChild%20(el)%3B%0A%3C%2Fscript%3E</anchor-external>:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> では「A a:href=&quot;bar&quot;」、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では「A a:href=&quot;foo&quot; b:href=&quot;foo&quot;」
になります。 <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNodeNS</anchor></code> にすると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> では「A a:href=&quot;bar&quot;」、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では「A b:href=&quot;bar&quot;」になります。
<time>2014-08-21T14:37:04.000Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cbody%3E%0A%3Cscript%3E%0A%20%20var%20el%20%3D%20document.createElement%20(%27a%27)%3B%0A%20%20el.setAttribute%20(%22href%22%2C%20%22foo%22)%3B%0A%20%20var%20attr%20%3D%20document.createAttribute%20(%22hRef%22)%3B%0A%20%20attr.value%20%3D%20%22bar%22%3B%0A%20%20el.setAttributeNode%20(attr)%3B%0A%20%20document.body.appendChild%20(el)%3B%0A%3C%2Fscript%3E">http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cbody%3E%0A%3Cscript%3E%0A%20%20var%20el%20%3D%20document.createElement%20(%27a%27)%3B%0A%20%20el.setAttribute%20(%22href%22%2C%20%22foo%22)%3B%0A%20%20var%20attr%20%3D%20document.createAttribute%20(%22hRef%22)%3B%0A%20%20attr.value%20%3D%20%22bar%22%3B%0A%20%20el.setAttributeNode%20(attr)%3B%0A%20%20document.body.appendChild%20(el)%3B%0A%3C%2Fscript%3E</anchor-external>:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> では「A href=&quot;bar&quot;」、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では「A hRef=&quot;bar&quot;」
になります。 <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setAttributeNodeNS</anchor></code> にすると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> では「A href=&quot;bar&quot;」、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では「A href=&quot;foo&quot; hRef=&quot;foo&quot;」になります。
<time>2014-08-21T14:37:04.000Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">Fix #117: alias setAttributeNode to setAttributeNodeNS and setNamedIt… · whatwg/dom@a0042ff</cite>
(<time>2015-11-25 18:00:08 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/a0042ffbc46d4382427fa3b238fa61b800a4f07c">https://github.com/whatwg/dom/commit/a0042ffbc46d4382427fa3b238fa61b800a4f07c</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">Fix the set an attribute algorithm · whatwg/dom@f8089df</cite>
(<time>2016-03-11 23:20:39 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/f8089df55baed0c2334725af45357ba659c212cd">https://github.com/whatwg/dom/commit/f8089df55baed0c2334725af45357ba659c212cd</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite xml:lang="en">Add support for custom elements · whatwg/dom@7f63535</cite>
(<time>2016-04-13 22:24:23 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a">https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <cite xml:lang="en">Add <strong></strong>[<strong></strong>CEReactions<strong></strong>]<strong></strong> annotations to mutating methods · whatwg/dom@3cd02d1</cite>
(<time>2016-04-26 19:08:11 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812">https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812</anchor-external></p></section></body></html>