gpt4 book ai didi

javascript - 获取光标在 TinyMCE 中的位置或行数

转载 作者:行者123 更新时间:2023-11-28 00:16:36 26 4
gpt4 key购买 nike

如何获取TinyMCE中的光标位置或TinyMCE中光标所在的行数?

最佳答案

这是我用来获取实际行号的我自己的插件之一的函数的一部分:

        var ed = tinymce.get('my_editor_id');
var bm = ed.selection.getBookmark();
var $marker = $(ed.getBody()).find('#'+bm.id);
var elem = ed.getDoc().getElementById(bm.id+'_start');
try {
box = elem.getBoundingClientRect();
}
catch(e)
{
// should not happen
console.log('error creating box: ' + e);
}

var doc = ed.getDoc(),
docElem = doc.documentElement,
body = ed.getBody(),
win = ed.getWin(),
clientTop = docElem.clientTop || body.clientTop || 0,
clientLeft = docElem.clientLeft || body.clientLeft || 0,
scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
top = box.top + scrollTop - clientTop,
left = box.left + scrollLeft - clientLeft;

// set Bookmark
ed.selection.moveToBookmark(bm);

var caret_line = Math.floor( (top) / lineHeight ) + 1;

getBoundingClientRect() 函数用于创建一个框,我们可以从中获取多个定位信息。请注意,我们需要使用标记元素并稍后重置插入符号。

更新: lineHeight 的信息

            // get height of row: eighter line-height or min-height
if ( $(ed.getBody()).find('p:first').css('line-height') != 'normal'){
lineHeight = $(ed.getBody()).find('p:first').css('line-height') ;
}
else {
lineHeight = $(ed.getBody()).find('p:first').css('min-height');
}

var lineHeight = lineHeight.substr(0, lineHeight.length -2 );

关于javascript - 获取光标在 TinyMCE 中的位置或行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com