Javascript:滚动光标在contenteditable div中发布粘贴
我有一个contenteditable属性值设置为true的div。当我在这个contenteditable中粘贴一些文本时,我能够将鼠标位置保持在粘贴文本的末尾。粘贴大量文本时,文本可能溢出可见区域。请注意,如果宽度固定,元素将沿Y方向滚动 我不知道如何在粘贴后确定光标(而不是鼠标)的Y位置,以便滚动到该位置。粘贴不一定总是在最后进行,所以滚动到底部并不是在所有情况下都有帮助 如果您对此有任何提示,我们将不胜感激。Javascript:滚动光标在contenteditable div中发布粘贴,javascript,html,Javascript,Html,我有一个contenteditable属性值设置为true的div。当我在这个contenteditable中粘贴一些文本时,我能够将鼠标位置保持在粘贴文本的末尾。粘贴大量文本时,文本可能溢出可见区域。请注意,如果宽度固定,元素将沿Y方向滚动 我不知道如何在粘贴后确定光标(而不是鼠标)的Y位置,以便滚动到该位置。粘贴不一定总是在最后进行,所以滚动到底部并不是在所有情况下都有帮助 如果您对此有任何提示,我们将不胜感激。const-scrollSelectionIntoView=()=>{ //获取
const-scrollSelectionIntoView=()=>{
//获取当前选择
const selection=window.getSelection();
//检查是否有选择范围
如果(!selection.rangeCount){
返回;
}
//获取第一个选择范围。几乎没有比这更多的选择(而不是firefox)
const firstRange=selection.getRangeAt(0);
//有时,如果将可编辑元素从dom中删除,则safari中可能会出现HierarchyRequest错误
if(firstRange.commonAncestorContainer===文档){
返回;
}
//创建一个空br,用作滚动的锚定,因为仅使用文本节点是不可能的
const tempancorel=document.createElement('br');
//将br置于插入符号位置的正后方
insertNode(tempancorel);
//滚动到br。我个人更喜欢添加block end选项,但如果您想使用“start”代替,只需将br替换为span即可
tempancorel.scrollIntoView({
块:'结束',
});
//移除锚,因为不再需要它了
tempancorel.remove();
};
trix editor对我来说效果很好