javascript - 计算文本选择的 xy 位置

标签 javascript html textselection

我正在尝试使用 DOM 元素创建我自己的文本选择。是的,我的意思是当您在此元素中选择它时,您在文本后面看到的蓝色背景。我的想法是停止默认行为(蓝色)并使用我自己的元素来完成这项工作,方法是找到选择的 xy 位置,然后放置绝对定位的元素。我希望能够使用常规的 div 执行此操作。

我想我需要 3 个元素。一个用于顶行(可能不完整),一个用于中间 block ,​​一个用于最后一行(与顶部相同)。这是一张可以帮助您理解的图像: Image showing the needed selection elements

我一直在考虑捕捉 mouseup/down 然后 mousemove 然后检查 window.getSelection() 但到目前为止我'我无法到达任何地方。

使用 CSS ::selection 将不起作用,因为该元素将没有焦点。

我感谢所有能得到的帮助!提前致谢。

编辑: 偶然发现https://code.google.com/p/rangy/这可能有帮助?有没有人使用过这个插件?

编辑2: 需要跨浏览器支持。

最佳答案

您可以使用 getClientRnge:

var element = document.getElementById('element')

element.onmouseup = function(){
    var selection   = document.getSelection(),
        range       = selection.getRangeAt(0),
        clientRects = range.getClientRects()

    console.log(clientRects)
}

http://jsfiddle.net/XjHtG/

这将返回所有选择的左、右、上、下、宽度和高度。

关于javascript - 计算文本选择的 xy 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17566323/

相关文章:

image - 如何将背景图像淡化为透明?

html - 将图像偏移一半?

javascript - 从地址获取经纬度并写入文件

javascript - 使用 Knockout.js 控制 Flash 插件,冲突的 jQuery.tmpl 和 Knockout-Sortable

html - Kendo Datepicker 格式没有改变

android - 在 WebView 中选择文本并捕获跨度

javascript - 获取页面当前选定的文本

css - 使隐藏文本的选择突出显示可见

javascript - 在点击时保留标记状态 -Treemap - Highchart

JavaScript while循环无限循环