javascript:创建从时间a的光标位置到时间b的光标位置的范围
我在时间a得到光标的位置。然后我在时间b得到光标的位置。我想做一个从时间a的光标位置到时间b的光标位置的范围。时间a和b是ctr-v(粘贴)的开始和结束 我得到了这样的光标位置——或者更确切地说是光标位置的一个范围javascript:创建从时间a的光标位置到时间b的光标位置的范围,javascript,Javascript,我在时间a得到光标的位置。然后我在时间b得到光标的位置。我想做一个从时间a的光标位置到时间b的光标位置的范围。时间a和b是ctr-v(粘贴)的开始和结束 我得到了这样的光标位置——或者更确切地说是光标位置的一个范围 sel = window.getSelection(); range_time_a = sel.getRangeAt(0).collapse(true); 但是,如何使用range_time_a和range_time_b创建一个从range_time_a开始到range_time_
sel = window.getSelection();
range_time_a = sel.getRangeAt(0).collapse(true);
但是,如何使用range_time_a和range_time_b创建一个从range_time_a开始到range_time_b结束的新范围
我看到了用光标获取元素并获取该元素内偏移量的代码。我可以将其用于setStart()和setEnd,但似乎应该有一种更简单的方法,因为我已经有了两个范围。编辑这实际上并不能提供您想要的内容。。。这真的很复杂。我最初对CommonAncestorContainer.innerHTML的建议会给您带来太多的回报(与您选择的内容最接近的父容器的所有HTML) 首先,您可能希望在用户按下ctrl+c时触发的eventHandler上触发此代码(此处讨论:) 如果您只想选择文本,这很容易做到:
range = window.getSelection().toString();
您不需要在不同的时间检查选择-您只需要在用户点击ctrl-c时捕获它
getSelection并不是用来捕获所选内容的HTML。您可以捕获文本并删除文本,移动到选择的开始/结束处,以及描述的一系列其他内容,但您无法获取HTML
问题的主要部分在于,这不是任何stanfard规范的一部分(请参阅)。另一个原因是它在不同浏览器之间不一致,或者在IE7/8中不受支持
如果您真的需要,可以在此处找到一些非标准示例,说明如何获取超出范围选择的更多信息-这不会返回光标位置-它会返回选择对象。。。你到底想达到什么目的?好的,不是光标位置,而是光标位置的范围。我正在尝试获取包含粘贴内容的范围。我想这一定是按下ctr-v和释放ctr-v时光标之间的东西。我可以从剪贴板中获取粘贴的文本,但我需要html。@user984003一个想法是在mousedown和mouseup上分别插入一个伪元素,然后使用它们的位置来创建范围。嘿,这是一个非常酷的想法!节点插入技术的唯一问题是,选择可能以奇怪的方式跨越多个嵌套元素级别,因此我不确定它是否有效。与getSelection对象也没有简单的方法来支持此任务的原因几乎相同。AFAIK window.getSelection存在一些问题(它在ie中不起作用)