MediaWiki:Gadget-ImageCompare.js

From JoJo's Bizarre Encyclopedia - JoJo Wiki
Revision as of 08:12, 26 July 2024 by Vish (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
mw.loader.getScript('https://unpkg.com/beerslider/dist/BeerSlider.js')
.then(function () {
    $(document).ready(function() {
        $.fn.BeerSlider = function (options) {
            options = options || {};
            return this.each(function() {
                new BeerSlider(this, options);
            });
        };

        function initializeBeerSlider(el) {
            var $img1 = $(el).find('> img, > * > img'); // Find direct img or img inside any direct child
            var $img2 = $(el).find('.beer-reveal img'); // Find img inside .beer-reveal

            // Check if both images have valid src attributes
            var img1Src = $img1.attr('src');
            var img2Src = $img2.attr('src');

            if (img1Src && img2Src) {
                // Ensure both images are loaded
                var img1Loaded = $img1[0].complete && $img1[0].naturalHeight !== 0;
                var img2Loaded = $img2[0].complete && $img2[0].naturalHeight !== 0;

                if (img1Loaded && img2Loaded) {
                    $(el).BeerSlider({start: $(el).data('beer-start')});
                } else {
                    // Retry initialization after a short delay
                    setTimeout(function() {
                        initializeBeerSlider(el);
                    }, 100); // Delay of 100ms
                }
            } else {
                console.warn('Skipping BeerSlider initialization for element due to missing image src:', el);
            }
        }

        $('.beer-slider').each(function(index, el) {
            initializeBeerSlider(el);
        });
    });
}, function (e) {
    // Script failed
    mw.log.error(e.message); // => "Failed to load BeerSlider script"
});