2013-09-30 45 views
0

我知道window.getselection()可以幫助我獲取所選內容。確定getselection()是否跨越不同節點

現在我正在嘗試編寫一個函數,以確定用戶是否選擇了跨不同節點的內容。

例如:

<li> 
    first node 
</li> 
<li> 
    second node 
</li> 
<li> 
    third node 
</li> 

如果用戶從第一到第三個選擇,我怎麼能得到哪裏用戶的選擇開始和結束,這點做的用戶開始和結束它的選擇?

如果有兄弟姐妹和anchorNodefocusNode之間的孩子?我能否獲得它的信息?

+1

[選擇](https://developer.mozilla.org/en-US/docs /網絡/ API /選擇)。 – Teemu

回答

1

可以使用Selection對象的anchorNodefocusNode屬性來標識節點哪個選擇開始和結束:

var startNode = window.getSelection().anchorNode; 
var finishNode = window.getSelection().focusNode; 
+0

如果在anchorNode和focusNode之間有兄弟姐妹和孩子,那該怎麼辦?我能否獲得它的信息? – LiJung

+1

'Selection'對象具有名爲'getRangeAt'的方法,該方法返回文檔中所選範圍之一。返回的對象是'Range'類型,並且有很多記錄讓您檢查其內容。 'extractContents'方法返回一個'DocumentFragment'對象的實例,它可以讓你查詢它的內容。例如,它的'children'屬性包含它包含的所有元素的列表。 – zaerymoghaddam