【问题标题】:document.elementFromPoint returns null for a selected textdocument.elementFromPoint 为选定的文本返回 null
【发布时间】:2016-01-28 00:39:57
【问题描述】:

我正在使用以下代码来获取所选文本的位置:

var text = window.getSelection(); 
start = text.anchorOffset; 
end = text.focusOffset - text.anchorOffset;

我想稍后再获取选定的文本.. 我正在使用:

document.elementFromPoint(start,end);

但是,它总是返回“null”。

请帮忙:)

【问题讨论】:

    标签: javascript


    【解决方案1】:

    elementFromPoint(start,end); 需要 xy 页面坐标,您在字符串中传递索引。

    要获取 xy 页面坐标,您可以使用 Calculating xy-position of text selection 。请注意,坐标是针对视口的,因此如果您想要与 HTML 文档顶部的距离,则可能需要考虑滚动。

    getSelection().getRangeAt(0).getClientRects()[0];
    // ClientRect {}
    // bottom: 226
    // height: 15
    // left: 300.75
    // right: 305.078125    
    // top: 211
    

    宽度:4.328125

    要获取包装文本节点的 HTML 元素,您可以使用 Get parent element of a selected text

    window.getSelection().anchorNode.parentElement
    

    【讨论】:

    • 我不明白 .. 获取所选文本的父元素如何帮助我获取其位置?
    • 您的代码试图从选择中查找元素;我告诉过你怎么做。您的问题没有说明获取所选文本的位置
    • 确实如此。我说“获取选定文本的位置”。我将两个位置(开始和结束)传递给这个函数:document.elementFromPoint(start,end)。我的问题是“为什么它返回 null ?”我想按其位置获取该文本。
    • @Mayusu 没有与文本节点对应的元素,这就是您的调用返回 null 的原因。我是说你能做的最好的就是获取包含你的选择的元素
    • @Mayusu 您应该通过说明您要做什么来使您的问题标题更清晰。我已经回答了标题中提出的问题。我刚刚添加了一些 cmets 来解释如何做你真正想做的事情
    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2013-10-31
    • 2019-05-05
    • 2013-09-12
    相关资源
    最近更新 更多