2009-10-12 41 views
1

我有一個HTML文本區域作爲Chrome內部運行的小型文本編輯器的基礎,其中包含搜索功能(因爲我需要超出瀏覽器提供的搜索功能)。對於更長的文本,這意味着我需要JavaScript在選擇找到的文本後滾動到正確的位置。這可以通過計算字體的行高度乘以找到的文本的行號(後者通過計算換行符來獲得),然後設置textareaElement.scrollTop ...但只有當textarea設置爲wrap =「off」時正常工作。當它包裝時,我有時需要它,我不能簡單地通過計算換行符來計算行數,並且我的滾動位置算法會稍微偏離。JavaScript:在textarea中查找特定字符串的垂直像素位置

如何才能找到找到的選定文本的正確位置?

回答

2

我已經爲log4javascript中的日誌控制檯的搜索功能解決了此問題。我的代碼將搜索結果包圍在風格屬性在您滑過搜索結果時發生更改的標籤中。最初,我在當前搜索結果跨度上調用了scrollIntoView(),但我認爲在某些瀏覽器(例如,log4javascript支持IE 5)時遇到了問題,並最終根據跨度和scrollLeftoffsetLeftoffsetTop屬性編寫了自己的滾動功能, scrollTop容器的屬性。我懷疑scrollIntoView()在Chrome中可以正常工作,所以你應該確定使用它。

+0

謝謝你的回答; scrollIntoView()看起來很有趣。我不得不承認,雖然我沒有使用任何div或span元素,所以我認爲它不起作用 - 我想要滾動到視圖中的內容僅僅是大型textarea元素中當前選定的文本部分... – 2009-10-15 09:02:18

+0

好。我正在努力想辦法達到你想要的。如果您的textarea使用固定寬度的字體和固定數量的列,則可以使用它來計算包裝線的數量。除此之外,我看不到一種做法。 – 2009-10-15 11:02:15

+0

@Phillip Lenssen:你可以用臨時跨度將當前選擇區域捲動到視圖中,然後使用DOM操作將其刪除,也許? – sirlark 2010-05-11 11:15:52

相關問題