如何使用Javascript获取文本区域内字符中的鼠标位置
How to get mouse position in characters inside textarea with Javascript
我正在页面上实现拖放功能。这个想法是用户可以从特殊位置开始拖动图像并将其拖放(释放鼠标左键)在文本区域内,这将发生特殊标签插入。
我对拖动本身没有问题,我遇到的问题是我无法确定鼠标在文本区域内的位置。我知道事件x
和y
位置mouseup
并且我肯定知道鼠标指针在文本区域内,但无法确定我需要在哪个位置插入所需的标签。由于焦点不在文本区域内,因此selectionStart
和selectionEnd
属性为 0。另外,值得注意的是,我通过在处理程序中返回false
来防止默认行为 mousemove
否则默认行为会将图像本身放在文本区域中(这对于 base64 图像非常糟糕)。
以下是我目前拥有的代码。
window.onPreviewItemMouseDown = function (e) {
var curTarget = $(e.currentTarget);
var container = curTarget.parent();
window.draggingImage = funcToGetId();
$(document).on("mousemove", window.onPreviewItemDragged);
$(document).on("mouseup", window.onPreviewItemDropped);
};
window.onPreviewItemDragged = function (e) {
return false;
};
window.onPreviewItemDropped = function (e) {
var target = $(e.target);
$(document).off("mousemove");
$(document).off("mouseup");
if (target[0].id === ID_TEXTAREA_TEXT) {
// here I need to get mouse pointer position inside the text somehow
}
return false;
};
任何帮助,不胜感激。
在您的情况下,使用本机ondragstart
事件而不是复杂的鼠标向下移动实现并操作要删除的数据会更容易。像这样:
document.getElementById('img').addEventListener('dragstart', function (e) {
e.dataTransfer.setData("text", '[img]' + this.id + '[/img]');
});
jsFiddle的现场演示。或委派版本。请注意,您还可以委托给"特殊位置"元素,这可能会使页面运行得更快一些。
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 在JavaScript中输出转义字符
- 当鼠标悬停在文本中的单词上时显示警报
- 不同浏览器中的空白字符正则表达式行为
- JsFiddle上的鼠标事件不起作用
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- Regex匹配除“”之外的所有字符;.js”;
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 将鼠标旋转限制为特定的度数
- 允许在文本框中使用某些字符
- 跟踪jqplot垂直折线图的鼠标位置
- 如何使用Javascript获取文本区域内字符中的鼠标位置
- JavaScript和HTML5 -向鼠标旋转字符
- HTML5 + JavaScript -移动字符向鼠标位置
- 从鼠标点击中获取输入文本位置(以字符为单位)