2016-01-27 20 views
1

我用下面的代碼獲取所選文本的位置返回null:document.elementFromPoint爲選定的文本

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

而且我想以後獲取選定的文本。對於我使用:

document.elementFromPoint(start,end); 

但是,它總是返回「null」。

請幫助:)

回答

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 
+0

我不明白..怎麼越來越的父元素我選定的文本將幫助我獲得它的位置? – Mayusu

+0

你的代碼試圖從選擇中找到一個元素;我告訴過你該怎麼做。你的問題沒有說明如何獲得所選文本的位置 –

+0

它的確如此。 我說「要得到所選文字的位置」。 而我將這兩個位置(開始和結束)傳遞給此函數:document.elementFromPoint(start,end)。 我的問題是「爲什麼它返回null?」我想按照它的位置來獲取文本。 – Mayusu

相關問題