

* splitText method (DOM Text 界面)

[1] メソッド 
[CODE(DOM)[[VAR(DOMi)[[[Text]]]].[CODE(DOMm)[splitText]] ([VAR(DOMp)[offset]])]]
は、[[文節]] [VAR(DOMi)[Text]] を位置
[CODE(DOMp)[offset]] で2分します。

引数 [CODE(DOMp)[offset]] は文字列先頭からの位置で、
[CODE(DOM)[0]] から始まります。[[サロゲート・ペア]]は1組で
2つ分と数えるので注意が必要です。

分割の結果前半の部分が当該[[節]]として残り、
後半の部分は新しいすぐ下の弟節として追加されます。

[2] 結果:
- (正常時) 新しい (弟の方の) 文節
- [[例外]] [CODE(DOM)[[[DOMException]]]]:
:[CODE(DOM)[INDEX_SIZE_ERR]]:[CODE(DOMp)[offset]]
が負の値か、又はデータ中の16ビット単位の数よりも大きい値です。
:[CODE(DOM)[NO_MODIFICATION_ALLOWED_ERR]]:
対象節は[[読取専用]]です。

[4] この method は DOM 水準 1 です。
<http://www.w3.org/TR/DOM-Level-1/level-one-core.html#method-splitText>

[3] [CODE(DOMp)[offset]] が [CODE(DOM)[0]]
とか[VAR[データの16ビット単位での長さ − 1]]
だった場合には一方の節は長さ 0 の文字列になりますが、
特に問題があるとはかかれていないから良いのでしょうか。

[5]
2つの[[節点]]が[[木]]の中で[[兄弟]]でありつつ〜とありますが、
[CODE(DOMa)@en[[[parentNode]]]] が [CODE(IDL)@en[[[null]]]]
の場合には[[兄弟]]になり得ないはずです。
([[名無しさん]])

[6]
2つの[[節点]]が[[木]]の中で[[兄弟]]でありつつ〜とありますが、
[CODE(DOMa)@en[[[parentNode]]]] が [CODE(IDL)@en[[[null]]]]
の場合には[[兄弟]]になり得ないはずです。
([[名無しさん]])

[7]
[CODE(DOMp)@en[[[offset]]]] が [CODE(DOMa)@en[[[data]]]]
の[[長さ]]と同じなら新しい[[節点]]は[[空文字列]]になるとあります。
[CODE(DOMp)@en[[[offset]]]] が[[零]]なら元の[[節点]]が[[空文字列]]になるということでよいのでしょう。
([[名無しさん]])

[8]
[[サロゲート・ペア]]を分断しようとしたらどうなるのでしょうか。
([[名無しさん]])

[9]
[CODE(DOMa)@en[[[isElementContentWhitespace]]]]
はどうなるのでしょうか。
([[名無しさん]])

[10]
[[引数]]は [CODE(IDL)@en[[[unsigned]] [[long]]]]
で[[負]]にはならないにもかかわらず、
[[負]]の場合 [CODE(DOMc)@en[[[INDEX_SIZE_ERR]]]]
と説明されています。
([[名無しさん]])

[11]
[CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
は[Q[この[[節点]]が[[読取専用]]なら]]とだけ書いてありますが、
[[親]]が[[読取専用]]のときにもそうならなければならないはずです。
([[名無しさん]])


[12]
[CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
は[Q[この[[節点]]が[[読取専用]]なら]]とだけ書いてありますが、
[[親]]が[[読取専用]]のときにもそうならなければならないはずです。
([[名無しさん]])


[[#comment]]


* メモ

[13] [CITE@en[Remove no-op range mutations from split a Text node]] ([[annevk]]著, [TIME[2017-03-07 19:44:49 +09:00]]) <https://github.com/whatwg/dom/commit/334428fce03df0f99fdb2468a4f87508a470bee3>