/
994.txt
66 lines (47 loc) · 4.12 KB
/
994.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
* テスト・ケース
[REFS[
- [1] [CITE[Index of /~wakaba/test/web/dom/element/set-attr]] ([TIME[2012-12-20 15:07:45 +09:00]] 版) <http://suika.fam.cx/~wakaba/test/web/dom/element/set-attr/>
]REFS]
* 歴史
[2]
[[DOM水準3]]で、自分自身を置換しようとしても効果はないと明記されました。
しかし、その場合何が返されるのかは不明です。
* 実装
[3] [[DOM3]] は他の[[文書]]の[[節点]]を指定したら [CODE(DOMe)@en[[[WRONG_DOCUMENT_ERR]]]] になるとしていますが、
実際には自動的に [[adopt]] されます。
[4] >>2 の場合には自分自身が返されます。
[5] [[Chrome]] ではおそらく [CODE(DOMm)@en[[[setAttributeNode]]]] と [CODE(DOMm)@en[[[setAttributeNodeNS]]]]
は同じで、 [CODE(DOMa)@en[[[namespaceURI]]]] と [CODE(DOMa)@en[[[localName]]]]
でどれが置き換えられるか決まります。 [[Firefox]] では [CODE(DOMm)@en[[[setAttributeNode]]]]
は [CODE(DOMm)@en[[[setAttribute]]]] と同じように [[QName]] が最初に一致した[[節点]]を置き換えるようで、
その結果不整合が生じることもあるようです。 [TIME[2012-12-20T15:12:49.500Z]]
[6] [[Firefox]] では[[非推奨]]との警告が出ます。
[7] [CITE@en[Define getAttributeNode''''''[''''''NS'''''']'''''' and removeAttributeNode · 5a881d9 · whatwg/dom]]
( ([TIME[2014-08-21 12:51:51 +09:00]] 版))
<https://github.com/whatwg/dom/commit/5a881d9b5f328f8e32f0fa8e73b4e8799772cb0c>
[8] [CITE@en[Define Element.prototype.setAttributeNode''''''[''''''NS'''''']'''''', removeAttributeNode, Name... · 12d0114 · whatwg/dom]]
( ([TIME[2014-08-21 13:32:48 +09:00]] 版))
<https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b>
[9] [CITE@en[Define Element.prototype.setAttributeNode''''''[''''''NS'''''']'''''', removeAttributeNode, Name... · 12d0114 · whatwg/dom]]
( ([TIME[2014-08-21 13:32:56 +09:00]] 版))
<https://github.com/whatwg/dom/commit/12d011437faef5ada7b816c94aab39b10cdb2f4b>
[10]
<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>:
[[Chrome]] では「A a:href="bar"」、[[Firefox]] では「A a:href="foo" b:href="foo"」
になります。 [CODE(DOMm)@en[[[setAttributeNodeNS]]]] にすると、
[[Chrome]] では「A a:href="bar"」、[[Firefox]] では「A b:href="bar"」になります。
[TIME[2014-08-21T14:37:04.000Z]]
[11] <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>:
[[Chrome]] では「A href="bar"」、[[Firefox]] では「A hRef="bar"」
になります。 [CODE(DOMm)@en[[[setAttributeNodeNS]]]] にすると、
[[Chrome]] では「A href="bar"」、[[Firefox]] では「A href="foo" hRef="foo"」になります。
[TIME[2014-08-21T14:37:04.000Z]]
[12] [CITE@en[Fix #117: alias setAttributeNode to setAttributeNodeNS and setNamedIt… · whatwg/dom@a0042ff]]
([TIME[2015-11-25 18:00:08 +09:00]] 版)
<https://github.com/whatwg/dom/commit/a0042ffbc46d4382427fa3b238fa61b800a4f07c>
[13] [CITE@en[Fix the set an attribute algorithm · whatwg/dom@f8089df]]
([TIME[2016-03-11 23:20:39 +09:00]] 版)
<https://github.com/whatwg/dom/commit/f8089df55baed0c2334725af45357ba659c212cd>
[14] [CITE@en[Add support for custom elements · whatwg/dom@7f63535]]
([TIME[2016-04-13 22:24:23 +09:00]] 版)
<https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a>