mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-10-06 12:01:39 +00:00
60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
$(function() {
|
|
var $pages = $(".p"),
|
|
$pageWrappers = $(".b"),
|
|
$main = $("#pdf-main"),
|
|
l = $pages.length;
|
|
|
|
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 200+ms
|
|
if (Date.now() - lastScrollTime > 200) {
|
|
clearInterval(scrollTimer);
|
|
// Only render pages that are or will be visible
|
|
selectiveRender();
|
|
}
|
|
}, 200);
|
|
});
|
|
|
|
// Trigger the event
|
|
$("#pdf-main").scroll();
|
|
});
|