如何从contenteditable div开始到光标位置的文本 [英] How to get text from contenteditable div from beginning to the cursor position

查看:94
本文介绍了如何从contenteditable div开始到光标位置的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法从开头到光标位置从 contenteditable div获取文字。

例如:



< div id =   editableDiv contenteditable =   true> 
快速的棕色狐狸跳过一只懒狗。
< / div >



假设1:光标在快速后闪烁。对函数的查询必须返回快速



假设2:光标在末尾闪烁 。对函数的查询必须返回快速的棕色狐狸跳过一只懒狗。



以下是得到Caret potition的功能



 function getCaretCharOffset(){
var element = document。 getElementById( editableDiv);
var caretOffset = 0 ;
if typeof window.getSelection!= undefined){
var range = window.getSelection()。 getRangeAt( 0 );
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer,range.endOffset);
caretOffset = preCaretRange.toString()。length;
}
其他 如果 typeof document.selection!= undefined&&& document.selection.type != 控制
{
var textRange = document.selection.createRange();
var preCaretTextRange = document.body.createTextRange();
preCaretTextRange.moveToElementText(element);
preCaretTextRange.setEndPoint( EndToEnd,textRange);
caretOffset = preCaretTextRange.text.length;
}
console.log(caretOffset);
return caretOffset;
}

解决方案

这是解决方案



< pre lang =cs> getTextFromHeadToCaret:function(){
var element = document.getElementById( editableDiv);
var caretOffset = 0 ;
if typeof window.getSelection!= undefined){
var range = window.getSelection()。 getRangeAt( 0 );
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer,range.endOffset);
caretOffset = preCaretRange.toString()。length;
} 其他 如果 typeof document.selection!= undefined&& document.selection.type!= Control){
var textRange = document.selection.createRange();
var preCaretTextRange = document.body.createTextRange();
preCaretTextRange.moveToElementText(element);
preCaretTextRange.setEndPoint( EndToEnd,textRange);
caretOffset = preCaretTextRange.text.length;
}
var divStr =


' #editableDiv')。text();
return divStr.substring( 0 ,caretOffset);
}


Is there a way to get text from contenteditable div from beginning to cursor position.
For example:

<div id="editableDiv" contenteditable="true">
    the quick brown fox jumps over a lazy dog.
</div>


Assumption 1: cursor blinking after the word quick. The query to the function must return the quick

Assumption 2: cursor blinking at the end of the sentence. The query to the function must return the quick brown fox jumps over a lazy dog.

Below is the function to get Caret potition

function getCaretCharOffset() {
    var element = document.getElementById("editableDiv");
    var caretOffset = 0;
    if (typeof window.getSelection != "undefined") {
        var range = window.getSelection().getRangeAt(0);
        var preCaretRange = range.cloneRange();
        preCaretRange.selectNodeContents(element);
        preCaretRange.setEnd(range.endContainer, range.endOffset);
        caretOffset = preCaretRange.toString().length;
    }
    else if (typeof document.selection != "undefined" && document.selection.type != "Control")
    {
        var textRange = document.selection.createRange();
        var preCaretTextRange = document.body.createTextRange();
        preCaretTextRange.moveToElementText(element);
        preCaretTextRange.setEndPoint("EndToEnd", textRange);
        caretOffset = preCaretTextRange.text.length;
    }
    console.log(caretOffset);
    return caretOffset;
}

解决方案

Here is the solution

getTextFromHeadToCaret: function () {
                var element = document.getElementById("editableDiv");
                var caretOffset = 0;
                if (typeof window.getSelection != "undefined") {
                    var range = window.getSelection().getRangeAt(0);
                    var preCaretRange = range.cloneRange();
                    preCaretRange.selectNodeContents(element);
                    preCaretRange.setEnd(range.endContainer, range.endOffset);
                    caretOffset = preCaretRange.toString().length;
                } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
                    var textRange = document.selection.createRange();
                    var preCaretTextRange = document.body.createTextRange();
                    preCaretTextRange.moveToElementText(element);
                    preCaretTextRange.setEndPoint("EndToEnd", textRange);
                    caretOffset = preCaretTextRange.text.length;
                }
                var divStr =


('#editableDiv').text(); return divStr.substring(0, caretOffset); }


这篇关于如何从contenteditable div开始到光标位置的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆