HTML: Text in block-element;获得点击的确切位置
HTML: Text in block-element; get exact position of click
我现在需要在在一个html块元素,只包含文本点击发生:
<div>This is some awesome text</div>
我想获得被点击的字母的位置。限制:不能为div添加额外的子元素。
选项吗?
我采用的解决方案是来自Mozilla的@TimDown。
function insertBreakAtPoint(e) {
var range;
var textNode;
var offset;
if (document.caretPositionFromPoint) { // standard
range = document.caretPositionFromPoint(e.pageX, e.pageY);
textNode = range.offsetNode;
offset = range.offset;
} else if (document.caretRangeFromPoint) { // WebKit
range = document.caretRangeFromPoint(e.pageX, e.pageY);
textNode = range.startContainer;
offset = range.startOffset;
}
// do whatever you want here!
}
有一个限制(至少我在Chromium中有一个小问题),范围。textNode不一定与被单击的那个相同。所包含的文本可能比预期的短。原因尚不清楚。我只是通过range.textNode.parentElement进行访问。firstChild在我的例子中,div只有一个子元素
减去当前元素的偏移量,得到点击相对于元素的位置(fiddle):
$(function () {
$("#awesome").click(function (event) {
var div = $(this);
var posX = event.pageX - div.offset().left;
var posY = event.pageY - div.offset().top;
alert("X: " + posX + " Y: " + posY);
});
});
相关文章:
- jquery试图按名称获取按钮位置
- 我可以获得相对于被点击元素的确切点击位置吗
- 谷歌地图固定位置覆盖
- 如何将输入(type=text)从html表单传递到javascript函数
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 循环比赛位置算法
- es6 相当于下划线查找位置
- jQuery循环在特定位置暂停
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 自定义函数中的光标位置
- 安卓平台上的QWebView HTML5地理位置
- DIV并排,位置不正确
- 使用jQuery更改元素的顶部位置
- 在谷歌地图上绘制位置数据库
- text使用shift键和箭头键时的区域插入符号位置
- 正在恢复<text区域>重新加载页面上的滚动条位置
- 固定时更改Phaser.Text的位置ToCamera
- 位置<span>在<text区域>
- 在使用jQuery Validate插件时,是否有一种简单的方法来改变单选按钮所需的消息TEXT,而不是位置
- HTML: Text in block-element;获得点击的确切位置