Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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:创建从时间a的光标位置到时间b的光标位置的范围_Javascript - Fatal编程技术网

javascript:创建从时间a的光标位置到时间b的光标位置的范围

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_

我在时间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_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中不起作用)