Welcome to IOPWiki, Commander.
We are searching for new editors to keep track of Girls' Frontline 2 content, as well as veteran players to complete the data of Girls' Frontline and Project Neural Cloud characters.
You can contribute without an account. Learn how to contribute and join our Discord server.

MediaWiki:Gadget-Common.js: Difference between revisions

Welcome to IOP Wiki. This website is maintained by the Girls' Frontline community and is free to edit by anyone.
Jump to navigation Jump to search
Initial setup
 
m Proper attribute naming convention
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
/** Common JavaScript functions used over all skins and platforms. */
/** Common JavaScript functions used over all skins and platforms. */


$(document).ready(function() {
RLQ.push(['jquery', function () {
  var lazyImages = [].slice.call(document.querySelectorAll(".lazy-img"));
$(document).ready(function() {
  console.log("Images to lazy load:", lazyImages.length);
  var lazyImages = [].slice.call(document.querySelectorAll(".lazy-img"));
  if ("IntersectionObserver" in window) {
  console.log("Images to lazy load:", lazyImages.length);
    var lazyImageObserver = new IntersectionObserver(function(entries, observer) {
  var lazyBackgrounds = [].slice.call(document.querySelectorAll("[data-bg-lazy]"));
      entries.forEach(function(entry) {
  console.log("Backgrounds to lazy load:", lazyBackgrounds.length);
        if (entry.isIntersecting) {
 
          var lazyImage = entry.target;
  if ("IntersectionObserver" in window) {
          if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; }
  var imageIntersectionHandler = function(entries, observer) {
          if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; }
      entries.forEach(function(entry) {
          lazyImage.classList.remove("lazy-img");
        if (entry.isIntersecting) {
          lazyImageObserver.unobserve(lazyImage);
          var lazyImage = entry.target;
        }
          if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; }
      });
          if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; }
    });
          lazyImage.classList.remove("lazy-img");
 
          lazyImageObserver.unobserve(lazyImage);
    lazyImages.forEach(function(lazyImage) {
        }
      lazyImageObserver.observe(lazyImage);
      });
    });
    };
  } else {
   
    // Possibly fall back to event handlers here
    var bgIntersectionHandler = function(entries, observer) {
    console.log("Lazy Loading seems to have failed.");
      entries.forEach(function(entry) {
  }
        if (entry.isIntersecting) {
});
          var lazyBg = entry.target;
          lazyBg.style.backgroundImage = "url('" + lazyBg.dataset.bgLazy + "')";
          lazyBg.removeAttribute("data-bg-lazy");
          lazyBgObserver.unobserve(lazyBg);
        }
      });
    };
   
    var lazyImageObserver = new IntersectionObserver(imageIntersectionHandler, { rootMargin: "100px" });
    lazyImages.forEach(function(lazyImage) {
      lazyImageObserver.observe(lazyImage);
    });
   
    var lazyBgObserver = new IntersectionObserver(bgIntersectionHandler, { rootMargin: "100px" });
    lazyBackgrounds.forEach(function(lazyBg) {
      lazyBgObserver.observe(lazyBg);
    });
  } else {
    // Possibly fall back to event handlers here
    console.log("Lazy Loading seems to have failed.");
  }
});
}]);

Latest revision as of 16:54, 23 July 2024

/** Common JavaScript functions used over all skins and platforms. */

RLQ.push(['jquery', function () {
	$(document).ready(function() {
	  var lazyImages = [].slice.call(document.querySelectorAll(".lazy-img"));
	  console.log("Images to lazy load:", lazyImages.length);
	  var lazyBackgrounds = [].slice.call(document.querySelectorAll("[data-bg-lazy]"));
	  console.log("Backgrounds to lazy load:", lazyBackgrounds.length);
	  
	  if ("IntersectionObserver" in window) {
	  	var imageIntersectionHandler = function(entries, observer) {
	      entries.forEach(function(entry) {
	        if (entry.isIntersecting) {
	          var lazyImage = entry.target;
	          if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; }
	          if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; }
	          lazyImage.classList.remove("lazy-img");
	          lazyImageObserver.unobserve(lazyImage);
	        }
	      });
	    };
	    
	    var bgIntersectionHandler = function(entries, observer) {
	      entries.forEach(function(entry) {
	        if (entry.isIntersecting) {
	          var lazyBg = entry.target;
	          lazyBg.style.backgroundImage = "url('" + lazyBg.dataset.bgLazy + "')";
	          lazyBg.removeAttribute("data-bg-lazy");
	          lazyBgObserver.unobserve(lazyBg);
	        }
	      });
	    };
	    
	    var lazyImageObserver = new IntersectionObserver(imageIntersectionHandler, { rootMargin: "100px" });
	    lazyImages.forEach(function(lazyImage) {
	      lazyImageObserver.observe(lazyImage);
	    });
	    
	    var lazyBgObserver = new IntersectionObserver(bgIntersectionHandler, { rootMargin: "100px" });
	    lazyBackgrounds.forEach(function(lazyBg) {
	      lazyBgObserver.observe(lazyBg);
	    });
	  } else {
	    // Possibly fall back to event handlers here
	    console.log("Lazy Loading seems to have failed.");
	  }
	});
}]);