選択範囲を取得したら、そのクローンを作成して、選択範囲の元のコンテンツを消去します。なぜクローンオブジェクトはまだ影響を受けますか?範囲のクローニングが機能しない
MozillaのAPIドキュメントを述べ--- https://plnkr.co/edit/A3TADtyyqkS6sI8ZJeaA?p=preview
<p id='test' contenteditable="true">hello world</p>
function test() {
var r = document.getSelection().getRangeAt(0).cloneRange();
console.log(r)
$('p').empty();
console.log(r);
}
$(function() {
$('p').on('click', test)
})
--- EDIT:が返さ私はここでは、コードです
(それがクローン化されたので)、それは独立しただろうと思いましたクローンは参照ではなく値によってコピーされるため、いずれかの範囲の変更は他のものに影響しません。
これはちょうどjqueryのempty()メソッドのクールークですか?
あなたはそれが影響を受けていると言いますか?最初のエコーは、 'Range {startContainer:text、startOffset:4、endContainer:text、endOffset:8、collapsed:false ...}'のように出現し、2番目は 'Range {startContainer:p#test、startOffset:0、endContainer :p#test、endOffset:0、collapsed:true ...} '結果を念頭に置いて、私はあなたの質問を理解できません。 – enhzflep
私は2つのエコーラインが同一であると予想しました。クローンは、ドキュメントの内容に何が行われても完全に独立しているべきではありませんか? – Skyler
私が知る限り、問題は範囲とクローンを作成する方法にあります。トピックのMDNページを参照してください:https://developer.mozilla.org/en-US/docs/Web/API/Range/cloneRange - 範囲取得/クローニングメソッドを使用してあなたの例を実行すると、エコーステートメントは同じです。 ;) - – enhzflep