我想突出顯示html頁面中的一系列文本,並獲取突出顯示的位置,然後用它來存儲註釋。在瀏覽器上存儲關於文本選擇的信息
我的問題
我有一篇文章頁面,允許用戶突出顯示選定的文本並添加註釋。我有它的一個點,我可以在所選文本的右側放置一個UI框來輸入評論(認爲谷歌文檔)。
我需要存儲有關選定文本的信息,以便我可以將其鏈接到任何評論。理想情況下,我只需存儲選定的文本,然後掃描該選擇的內容。這存在一個主要缺陷:如果在內容中出現兩個或更多相同文本選擇的副本。
內容本身是存儲在數據庫中的HTML。
例如,突出顯示了以下段落的選擇(粗體選擇)。我需要存儲關於選擇的信息,以便能夠找到它的未來:
「有效地通過病毒龕革命性互操作的人力資本通過全球社區Holisticly抓住世界級潛力客觀地擁抱多學科龕並行。範式,專業。「
我到目前爲止已經
進行使用文本選擇range
的getBoundingClientRect()
我可以從頁面頂部的距離。雖然對定位UI評論框很有用,但我不認爲這會幫助我將評論鏈接到他們選定的文本。
我可以從window.getSelection()
中獲得所選文字,但可能有多處出現。
我想不修改內容。即,如果我可以幫助它,就像將評論移除一樣,將選擇內容包含在span
或類似內容中,但對於他們刪除標記可能會很棘手。
此方法的唯一問題是該範圍內的'startOffset'和'endOffset'作爲部分的一部分。即一個段落將會是一個段落,但是如果一個段落在中間包含一個鏈接,那麼它將該段落分成兩段,所以'startOffset'可以是0,但是從第二段落的第二段落開始。雖然沒有辦法知道哪些部分。 – iamjonesy
使用整個文本作爲相對點。忽略這些部分。 –
它看起來像提供'getRangeAt(0)'偏移是相對於'節'而不是整個文本。如果我突出顯示第二段的第一個單詞,那麼'startOffset'爲0. – iamjonesy