克隆范围不起作用
Cloning a range doesn't work
当我得到一个选择范围,克隆它,然后清除作为选择源的内容时,为什么克隆的对象仍然受到影响?我以为它会是独立的(因为它是克隆的)
代码如下: 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)
})
---编辑---
Mozilla api 文档指出:返回的克隆是按值而不是引用复制的,因此任一范围的更改不会影响另一个范围。
这可能只是jquery的empty()方法的一个怪癖吗?
我在谷歌上搜索了一下,找到了这个解决方案。请检查它是否按您的需要工作
function test() {
var range = document.getSelection().getRangeAt(0);
console.log(range)
var clone = range.cloneRange();
console.log(clone)
range.collapse(true);
var markerElement = document.createElement("span");
markerElement.appendChild(document.createTextNode("'ufeff"));
range.insertNode(markerElement);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(clone);
setTimeout(function(){
markerElement.parentNode.removeChild(markerElement);
}, 250);
}
相关文章:
- 输入类型范围在angularjs重复内不起作用
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 如果端口范围太宽,节点中的端口扫描不起作用
- Angular:从工厂更新范围不起作用
- 范围的Switch语句不起作用
- AngularJS-ng显示范围变量不起作用
- 角度范围不起作用
- Javascript 全局范围不起作用
- 样式<输入类型=“范围”>用于重定向,在触摸设备上不起作用
- jQuery 自定义事件在全局范围内工作,但在对象之间不起作用
- 高于 1 的嘶嘶声范围不起作用
- 通过指令范围传递对象不起作用
- 创建范围功能在除IE以外的其他浏览器中不起作用
- Javascript范围在角度SPA应用程序中不起作用
- 角度范围.$watch在指令中不起作用
- 将数组从文档属性与数据范围进行比较不起作用
- 我已经在全球范围内安装了 slush-phaser-webpack,但它不起作用
- 茉莉花+伊斯坦布尔覆盖范围不起作用
- 高图表导航器和范围刻度不起作用