我有一个 SVG 元素,我在其中制作了一个 foreignObject。foreignObject 包含两个对象,一个 textarea 和一个 div。textarea 位于 div 的顶部并且是透明的。当人们在 textarea 中键入时,文本被复制到 div(一种所见即所得的编辑器)。这一切都很好。但是问题是:当您在 textarea 中选择文本(100% 透明)时,您看不到您选择的文本,所以现在我想创建一个代码,将选择复制到 div 中的文本。
我有以下内容,这些位告诉我在 textarea 中选择了什么:
var start = e.target.selectionStart;
var end = e.target.selectionEnd;
(e 是选择事件监听器的事件)
以下选择 div 中的文本:
div = $(e.target).next('div');
div = div[0];
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(div);
selection.addRange(range);
这可行,但会选择 div 中的所有文本。如何将选择限制为仅在文本区域中选择的部分?
(顺便说一句,此代码用于演示应用程序,只需要在 firefox 中工作)