gpt4 book ai didi

跟随鼠标的 Javascript html 编辑器光标焦点

转载 作者:行者123 更新时间:2023-11-29 22:24:55 25 4
gpt4 key购买 nike

我在我的 Web 应用程序中使用 dhtml (midas) 编辑器作为 html 编辑器,我想做的是在这个 html 编辑器中获得一个聚焦光标跟随鼠标,有没有办法做到这一点?

添加示例:我希望 textarea 中的光标跟随鼠标,所以如果你的 textarea 中有一个大文本并且你正在用鼠标移动它,光标(文本光标)应该跟随鼠标,就像这样:

"This is an ex|example text"- 如果鼠标悬停在“example”字词上,在 x 和 a 之间,文本光标 (|) 应该聚焦在那里,但是当我将鼠标移到例如“text”光标上时 |应该在鼠标当前所在位置的字母之间。

最佳答案

好的,我找到了使用 Ext.util.TextMetrics 的解决方案,首先我得到了编辑器中每个字符的位置,然后我将其与鼠标光标位置进行比较,然后根据 charNum 数组中的给定字符更新 midas 选择

htmlEditor.getEl().on('mousemove', function(e)
{
var charNum = {},
text = htmlEditor.getValue(),
fWidth = htmlEditor.getWidth();

var textMetrics = new Ext.util.TextMetrics(htmlEditor.getEl(), htmlEditor.getWidth());

for(var n=0;n<text.length;n++)
{
var dat = text.substring(0, n)
var width = textMetrics.getWidth(dat);
var height = textMetrics.getHeight(dat);

if(width > fWidth)
{
var mult = Math.ceil(width/fWidth)
var width = width % fWidth;
height = height*mult;
}

charNum[n] = [width, height];
}

//console.log("charNum: "+charNum.toSource());

var mX = e.getX();
var mY = e.getY();

var cXY = htmlEditor.getEl().getXY();
var cX = cXY[0];
var cY = cXY[1];

var x = mX-cX-20;
var y = mY-cY;

//console.log("fin xy: "+x+' '+y);

var n = -1;
var z = 0;
for(key in charNum)
{
if(charNum[key][0] > x && charNum[key][1] > y)
{
n = key-1;
break;
}
n++;
z++;
}

if(x < 0 && y < 14) n = -1;


if(n == (z-1) && n != -1)
{
n++;
}

var selection = htmlEditor.win.getSelection();

range = selection.getRangeAt(0);
range.selectNodeContents(htmlEditor.getEditorBody());
range.collapse(true);
for(var x=0;x<n;x++)
{
selection.modify("move", "forward", "character");
}
});

关于跟随鼠标的 Javascript html 编辑器光标焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138022/

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