我有一個<div>
與overflow: auto;
和足夠的內容需要垂直滾動。是否可以僅提取可滾動div的可見內容?
有沒有一種方法,使用PLAIN JAVASCRIPT,只提取<div>
中的可見內容(HTML)? (也就是說,基於當前的scollbar位置,只有屏幕上可見的東西)。注 - 容器不一定是<div>
。
我有一個<div>
與overflow: auto;
和足夠的內容需要垂直滾動。是否可以僅提取可滾動div的可見內容?
有沒有一種方法,使用PLAIN JAVASCRIPT,只提取<div>
中的可見內容(HTML)? (也就是說,基於當前的scollbar位置,只有屏幕上可見的東西)。注 - 容器不一定是<div>
。
當然,只要你不介意應用一些position
,您的容器。一旦你應用了定位,你就可以獲得子元素的offset
相對於其父母的height
(和width
,如果需要的話),然後確定元素是否可見。
這裏有一個簡單的小提琴,我把它扔在一起只在Chrome中測試過,所以請自擔風險! ;)
相關JS:
function isElementVisible (el, parent) {
return (el.offsetTop + el.clientHeight) <= (parent.clientHeight);
}
你可以添加額外的邏輯來返回的條件(例如,覈對元素相對於它的的offsetLeft
的父,看它是否是實際上可見...)
希望這有助於!
是的,它是可能的,但使用
document.elementFromPoint(x,y)
其極高哈克所以,你會通過你的DIV查詢的邊框屏幕緩衝迭代,並收集返回的元素。
看到http://developer.mozilla.org/En/DOM:document.elementFromPoint更詳細的API文檔
什麼是用例?這遠非簡單的任務,具體取決於期望的準確度水平 – charlietfl 2015-03-03 03:14:02
如果我在容器的一側有內容列表,我希望能夠在內容列表中突出顯示當前可見的部分。我還希望能夠在另一側有一個單獨的div,列出主要div的可見內容中的任何縮寫/定義... – lithic 2015-03-03 03:18:37
做一些網絡搜索有很多腳本和插件這樣做。只需要使用元素 – charlietfl 2015-03-03 03:21:24