MediaWiki:Gadget-DeferredDisplay.js
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.
/**
* Deferred display of {{tl|nsfw}}-tagged images.
* jshint validation
* @autho Dschwen, 2013 / Vish, 2023
*/
$(document).ready(function() {
function initializeObserver() {
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const lazyImage = entry.target;
if (lazyImage.classList.contains('lazy-image-placeholder')) {
lazyImage.addEventListener('click', function(e) {
e.preventDefault();
$(this).parent().parent().css({
backgroundImage: '',
backgroundRepeat: '',
backgroundPosition: '',
backgroundSize: '',
display: ''
}).find('img').css({
visibility: ''
});
});
lazyImage.classList.add('image-lazy-loaded');
observer.unobserve(lazyImage);
}
}
});
}, {
rootMargin: '0px 0px 200px 0px'
});
// Observe all lazy images
document.querySelectorAll('.lazy-image-placeholder').forEach(image => {
observer.observe(image);
});
}
function applyStyles() {
$('img[alt*=NSFWTAG]').parent().add($('.thumbinner,.gallerybox')
.has('.nsfwelement').find('.image').parent())
.one('click', function(e) {
e.preventDefault();
$(this).css({
backgroundImage: '',
backgroundRepeat: '',
backgroundPosition: '',
backgroundSize: '',
display: ''
}).find('img').css({
visibility: ''
});
})
.css({
backgroundImage: 'url("https://static.jojowiki.com/images/customizations/Dialog-warning-yellow.png")',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'center',
backgroundSize: 'contain',
display: 'block'
})
.find('img').css({
visibility: 'hidden'
});
}
initializeObserver();
applyStyles();
}(jQuery, mediaWiki));