1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-07-07 18:30:34 +00:00
pdf2htmlEX/share/tail.html

69 lines
1.8 KiB
HTML

<!-- tail.html by Hongliang 2012.09.11 -->
</div>
<script type="text/javascript">
$(function() {
var $pages = $(".p"),
$pageWrappers = $(".pw"),
$main = $("#pdf-main"),
l = $pages.length;
$pages.hide();
function isPageVisible(i, H) {
var $pw = $($pageWrappers[i]),
t = $pw.offset().top,
b = t + $pw.height() ;
return ( ! ( b < 0 || t >= H ) );
}
function setVisibilities(from, to, visible) {
for(var i = from; i <= to; ++i) {
var $p = $($pages[i]);
if(visible) $p.show(); else $p.hide();
}
}
// Selectively rendering of pages that are visible or will be visible
function selectiveRender() {
var first = 0, last = l - 1,
H = $main.height();
// Find the first visible page
while(first < l && !isPageVisible(first, H))
first++;
// Find the last visible page
while(last >= 0 && !isPageVisible(last, H))
last--;
// Set invisible
setVisibilities(first > 0 ? first-1 : first,
last < l -1 ? last + 1 : last, true);
setVisibilities(0, first - 2, false);
setVisibilities(last + 2, l-1, false);
}
// Listen to scrolling events to render proper pages
var scrollTimer = null;
$("#pdf-main").scroll(function() {
// Now
lastScrollTime = Date.now();
// Make sure at most one timer runs
clearInterval(scrollTimer);
// Check when scrolling stops
scrollTimer = setInterval(function() {
// If scrolling pauses 300+ms
if (Date.now() - lastScrollTime > 300) {
clearInterval(scrollTimer);
// Only render pages that are or will be visible
selectiveRender();
}
}, 200);
});
// Trigger the event
$("#pdf-main").scroll();
});
</script>
</body>
</html>
<!-- tail.html END -->