Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Range.cloneRange()实际上不克隆该范围?_Javascript_Jquery_Contenteditable - Fatal编程技术网

Javascript Range.cloneRange()实际上不克隆该范围?

Javascript Range.cloneRange()实际上不克隆该范围?,javascript,jquery,contenteditable,Javascript,Jquery,Contenteditable,在contenteditablespan中更改html后,我试图重置光标位置。为此,我克隆了当前范围,然后设置html,然后清除范围,然后添加范围,最后折叠。但是当我更改html时,克隆的范围被重置!这使我相信克隆的范围实际上不是深度拷贝,因为否则,更改html为什么会影响它?我认为我可以手动复制所有属性,但这听起来很痛苦。无论如何,复制范围的正确方法是什么 $(“#myText”)。关于(“输入”,函数(){ var temp=window.getSelection().getRangeAt

contenteditable
span
中更改html后,我试图重置光标位置。为此,我克隆了当前范围,然后设置html,然后清除范围,然后添加范围,最后折叠。但是当我更改html时,克隆的范围被重置!这使我相信克隆的范围实际上不是深度拷贝,因为否则,更改html为什么会影响它?我认为我可以手动复制所有属性,但这听起来很痛苦。无论如何,复制范围的正确方法是什么

$(“#myText”)。关于(“输入”,函数(){
var temp=window.getSelection().getRangeAt(0.cloneRange();
控制台日志(temp);
$(“#myText”).html($(“#myText”).html());
//清除电流范围
控制台日志(temp);
getSelection().removeAllRanges();
//添加范围
window.getSelection().addRange(temp);
//现在把卡雷特移到那里
window.getSelection().collapseToEnd();
})


你好!执行此行时:

$("#myText").html($("#myText").html());

您触发页面来解析该输入并创建新的子节点。当您克隆一个范围时,它仍然指向旧的节点,这些节点被删除,因此原始和克隆的范围都会重置

请始终尝试在问题本身中添加一个链接(最好是作为snippet->
/Ctrl+M),而不仅仅是指向可能不可用的外部资源的链接(脱机、阻止等)。另请参见。您找到问题的答案了吗?