MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
Dragon 12dk (talk | contribs) No edit summary |
Dragon 12dk (talk | contribs) No edit summary |
||
| Line 39: | Line 39: | ||
setTimeout( sendHeight, 500 ); | setTimeout( sendHeight, 500 ); | ||
setTimeout( sendHeight, 1500 ); | setTimeout( sendHeight, 1500 ); | ||
} ); | |||
} )(); | |||
// Forward anchor link clicks to parent page scroll | |||
( function () { | |||
if ( !window.location.search.includes( 'embed=1' ) ) return; | |||
document.addEventListener( 'click', function ( e ) { | |||
var link = e.target.closest( 'a' ); | |||
if ( !link ) return; | |||
var href = link.getAttribute( 'href' ); | |||
if ( !href || !href.startsWith( '#' ) ) return; | |||
var id = href.slice( 1 ); | |||
var target = document.getElementById( id ) || document.querySelector( '[name="' + id + '"]' ); | |||
if ( !target ) return; | |||
e.preventDefault(); | |||
window.parent.postMessage( { embedScrollTo: target.getBoundingClientRect().top + window.scrollY }, '*' ); | |||
} ); | } ); | ||
} )(); | } )(); | ||
Revision as of 19:33, 2 April 2026
/* Any JavaScript here will be loaded for all users on every page load. */
// Remove whitespace tags using JS. The CSS-based approach seems to work fine on Chromium-based browsers, but not very well on Firefox.
window.onload = function() {
var paras = document.querySelectorAll('.mw-parser-output p');
for (var i = 0; i < paras.length; i++) {
if (paras[i].childNodes[0].nodeName === 'BR') {
paras[i].remove();
}
}
}
// Force links to open in new tab in embed mode
if (document.body.classList.contains('vc-embed-mode')) {
document.addEventListener('DOMContentLoaded', function () {
const links = document.querySelectorAll('a[href]');
links.forEach(link => {
const href = link.getAttribute('href');
// Skip anchors and empty links
if (!href || href.startsWith('#')) return;
// Make all links open in new tab
link.setAttribute('target', '_blank');
link.setAttribute('rel', 'noopener noreferrer');
});
});
}
// Report page height to parent when embedded
( function () {
if ( !window.location.search.includes( 'embed=1' ) ) return;
function sendHeight() {
window.parent.postMessage( { embedHeight: document.body.scrollHeight }, '*' );
}
mw.hook( 'wikipage.content' ).add( function () {
sendHeight();
setTimeout( sendHeight, 500 );
setTimeout( sendHeight, 1500 );
} );
} )();
// Forward anchor link clicks to parent page scroll
( function () {
if ( !window.location.search.includes( 'embed=1' ) ) return;
document.addEventListener( 'click', function ( e ) {
var link = e.target.closest( 'a' );
if ( !link ) return;
var href = link.getAttribute( 'href' );
if ( !href || !href.startsWith( '#' ) ) return;
var id = href.slice( 1 );
var target = document.getElementById( id ) || document.querySelector( '[name="' + id + '"]' );
if ( !target ) return;
e.preventDefault();
window.parent.postMessage( { embedScrollTo: target.getBoundingClientRect().top + window.scrollY }, '*' );
} );
} )();