X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/a1982d4e37d348ca0f58d41e1d4ce6022ca09b4d..a39ce20a7f4d01f30508c4d003e6d973298866c6:/project/static/js/jquery.autoscroll.js diff --git a/project/static/js/jquery.autoscroll.js b/project/static/js/jquery.autoscroll.js new file mode 100644 index 00000000..c342bdf5 --- /dev/null +++ b/project/static/js/jquery.autoscroll.js @@ -0,0 +1,31 @@ +(function($) { + $.fn.autoscroll = function(synchronizeWith, options) { + var self = $(this); + var selfContainer = self.parent(); + var synchronizeWith = $(synchronizeWith); + var synchronizeWithContainer = synchronizeWith.parent(); + var eventContainer = synchronizeWithContainer; + + // Hack for iframes + if (self.is('iframe')) { + selfContainer = $('body', $('iframe').contents()); + self = selfContainer; + } + + if (synchronizeWith.is('iframe')) { + eventContainer = synchronizeWith.contents(); + synchronizeWithContainer = $('body', eventContainer); + synchronizeWith = synchronizeWithContainer; + } + + synchronizeWithContainer.data('autoscroll.lastCheckedScrollTop', synchronizeWithContainer.scrollTop()); + + eventContainer.scroll(function() { + var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop'); + var percentScrolled = distanceScrolled / synchronizeWith.height(); + selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height()); + synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop()); + }); + }; +})(jQuery); +