| Line 222: |
Line 222: |
| | }); | | }); |
| | }); | | }); |
| | + | |
| | + | /* |
| | + | Scrolling function applied to Template:Map/ImageNode. |
| | + | Author: gaka |
| | + | */ |
| | + | (function(mw, $) { |
| | + | |
| | + | "use strict"; |
| | + | |
| | + | $(document).ready(function() { |
| | + | |
| | + | console.log("Scroll v1.0.1"); |
| | + | |
| | + | /** |
| | + | * Scroll event propagator. |
| | + | * |
| | + | * E.g., an element can have a scroll (overflow:auto) and images, but scrolling it won't perform |
| | + | * lazy loading for images, since scroll event is not propagated. |
| | + | */ |
| | + | |
| | + | $('.scrollable').each(function() { |
| | + | $(this).scroll(function() { |
| | + | window.dispatchEvent(new CustomEvent('scroll')); |
| | + | }); |
| | + | }); |
| | + | |
| | + | /** |
| | + | * Template:Map scroll on click support. |
| | + | */ |
| | + | |
| | + | function updateContent() { |
| | + | $(".map-node a").off("click"); |
| | + | $(".map-node a").click(function(e) { |
| | + | var href = $(this).attr("href"); |
| | + | var $element = $(href); |
| | + | var $container = $element.parent(); |
| | + | if ($element.length === 1 && $container.length === 1) { |
| | + | $container.scrollTop($container.scrollTop() - $container.offset().top + $element.offset().top); |
| | + | e.preventDefault(); |
| | + | } |
| | + | return false; |
| | + | }); |
| | + | } |
| | + | |
| | + | updateContent(); |
| | + | mw.hook("wikipage.content").add(updateContent); |
| | + | |
| | + | }); |
| | + | |
| | + | }(mediaWiki, jQuery)); |