回答
對於需要使用document.documentElement.scrollTop
/scrollLeft
/scrollHeight
/scrollWidth
視更好的例子。有一個輕微的複雜性:我認爲在怪癖模式(document.compatMode
是"BackCompat"
)您需要檢查這些屬性document.body
而不是document.documentElement
。
查看https://developer.mozilla.org/en/DOM/element.scrollTop的文檔。
編輯:看起來你並不是真的對視口感興趣,而是對它的內容感興趣。 AFAIK沒有通用的方式來獲取網頁特定區域的內容。它絕對不能用一個單一的Range
對象來描述,而是一組範圍。即使如此:如果元素有很多文本,並且它全部是一個TextNode
,您將不知道文本的哪些部分可見,哪些不可見。
但是,在某些特殊情況下(特別是當頁面結構很簡單時),您可能可以通過使用range.getBoundingClientRect()來了解顯示哪些文本。您首先選擇範圍內的所有內容,然後縮小該範圍,直到範圍大小位於視口邊界內。
下面是一個包含大量文本的垂直滾動<div>
的示例:http://jsfiddle.net/5vEdP/(在Firefox 6,Chrome 14和IE 9中測試過)。首先需要確保每個文本字符都放在它自己的TextNode
中,否則,您將無法在Range
對象中單獨選擇它。然後選擇文本的容器並移動範圍的開始,直到範圍的頂部邊界低於容器的頂部邊界。然後它通過移動範圍的末尾爲底部邊界做同樣的事情。最後你會得到一個只選擇完全可見的文本節點的範圍。
width:document.body.offsetWidth; height:document.body.offsetHeight;
HERE是各種瀏覽器
我已經嘗試過,但它的工作原理錯誤,當窗口已調整大小... –
這是一個標準的網站,這個問題是特別針對XUL。 – macguru2000
- 1. 在angularJS範圍中設置可見性
- 2. 如何獲取範圍的可見文本? (createRange)
- 3. 如何獲取可見地圖範圍的座標(lat/lon)?
- 4. 如何在角度 - 日曆日曆中獲取可見日期範圍
- 5. VBA函數僅在可見範圍
- 6. Caroufredsel在Firefox中不可見
- 7. 在SpannableString中獲取應用範圍的範圍
- 8. 如何在C#中獲取IP範圍?
- 9. 在子指令中獲取範圍值
- 10. 在Codemirror中獲取選定範圍
- 11. Django在Queryset中獲取範圍
- 12. 在C++中獲取「範圍」錯誤
- 13. 如何在javascript中獲取HttpWebRequest範圍?
- 14. 在Code :: Blocks中獲取範圍錯誤
- 15. 在Python中獲取日期範圍
- 16. 獲取範圍在Excel 2007中
- 17. 範圍欄可見背後的UISearchBar
- 18. fcntl()範圍可見性行爲?
- 19. VBA用戶窗體可見範圍
- 20. jQuery - 只顯示可見範圍
- 21. 在firefox + greasemonkey中的Javascript文本範圍
- 22. 複選框在IE8中不可見,但在Firefox中可見
- 23. 我們如何測量可可中文字的可見範圍?
- 24. 如何獲取Firefox/IE/Chrome中可見選項卡的URL?
- 25. 使用javascript僅獲得一個範圍內的可見內容
- 26. 範圍對象,獲取選擇父節點Chrome vs Firefox
- 27. 在已過濾的範圍內查找可見單元格的最大範圍
- 28. 的Java:JList中只發現在可見光範圍內
- 29. 用jquery獲取範圍值
- 30. 獲取資產範圍內
我已經檢查過這個解決方案(就像http://stackoverflow.com/questions/7477144/html-javascript-remember-scroll-independent-of-the-window-size)。這只是一個aproximation和工作錯誤的窗口調整大小。 –
@JonathanNuñezAguin:如果你對視口的內容感興趣,而不是視口本身,那麼如果你這麼說的話,它會很有幫助。查看我的答案更新。 –
是的,我對它的內容很感興趣。我想獲得視口中第一個可見單詞的「句柄」。起初用xul的document.elementFromPoint嘗試過,但是這有一個問題:它會給我包含div,它可以在視口之前很久就開始。所以我認爲有可能使用範圍的解決方案... –