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 |
||
| (10 intermediate revisions by the same user not shown) | |||
| Line 9: | Line 9: | ||
} | } | ||
} | } | ||
} | }; | ||
// | /* ── Embed: dynamic height + anchor scroll ── */ | ||
( function () { | |||
if ( window === window.top ) return; | |||
function sendHeight() { | function sendHeight() { | ||
window.parent.postMessage( { embedHeight: | var h = document.body ? document.body.scrollHeight : 0; | ||
if ( h > 0 ) window.parent.postMessage( { embedHeight: h + 10 }, '*' ); | |||
} | } | ||
document.addEventListener( 'DOMContentLoaded', sendHeight ); | |||
window.addEventListener( 'load', function () { | |||
sendHeight(); | sendHeight(); | ||
setTimeout( sendHeight, 500 ); | setTimeout( sendHeight, 500 ); | ||
setTimeout( sendHeight, 1500 ); | setTimeout( sendHeight, 1500 ); | ||
} ); | } ); | ||
if ( typeof mw !== 'undefined' ) { | |||
mw.hook( 'wikipage.content' ).add( sendHeight ); | |||
} | |||
document.addEventListener( 'click', function ( e ) { | document.addEventListener( 'click', function ( e ) { | ||
var link = e.target.closest( 'a' ); | var link = e.target.closest( 'a' ); | ||
| Line 56: | Line 41: | ||
window.parent.postMessage( { embedScrollTo: target.getBoundingClientRect().top + window.scrollY }, '*' ); | window.parent.postMessage( { embedScrollTo: target.getBoundingClientRect().top + window.scrollY }, '*' ); | ||
} ); | } ); | ||
} )(); | |||
/* ── Embed: open links in new tab (only when ?embed=1) ── */ | |||
( function () { | |||
if ( window === window.top ) return; | |||
if ( !window.location.search.includes( 'embed=1' ) ) return; | |||
function retargetLinks() { | |||
var links = document.querySelectorAll( 'a[href]' ); | |||
for ( var i = 0; i < links.length; i++ ) { | |||
var href = links[ i ].getAttribute( 'href' ); | |||
if ( !href || href.charAt( 0 ) === '#' ) continue; | |||
links[ i ].setAttribute( 'target', '_blank' ); | |||
links[ i ].setAttribute( 'rel', 'noopener noreferrer' ); | |||
} | |||
} | |||
window.addEventListener( 'load', retargetLinks ); | |||
if ( typeof mw !== 'undefined' ) { | |||
mw.hook( 'wikipage.content' ).add( retargetLinks ); | |||
} | |||
} )(); | } )(); | ||
Latest revision as of 20:21, 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();
}
}
};
/* ── Embed: dynamic height + anchor scroll ── */
( function () {
if ( window === window.top ) return;
function sendHeight() {
var h = document.body ? document.body.scrollHeight : 0;
if ( h > 0 ) window.parent.postMessage( { embedHeight: h + 10 }, '*' );
}
document.addEventListener( 'DOMContentLoaded', sendHeight );
window.addEventListener( 'load', function () {
sendHeight();
setTimeout( sendHeight, 500 );
setTimeout( sendHeight, 1500 );
} );
if ( typeof mw !== 'undefined' ) {
mw.hook( 'wikipage.content' ).add( sendHeight );
}
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 }, '*' );
} );
} )();
/* ── Embed: open links in new tab (only when ?embed=1) ── */
( function () {
if ( window === window.top ) return;
if ( !window.location.search.includes( 'embed=1' ) ) return;
function retargetLinks() {
var links = document.querySelectorAll( 'a[href]' );
for ( var i = 0; i < links.length; i++ ) {
var href = links[ i ].getAttribute( 'href' );
if ( !href || href.charAt( 0 ) === '#' ) continue;
links[ i ].setAttribute( 'target', '_blank' );
links[ i ].setAttribute( 'rel', 'noopener noreferrer' );
}
}
window.addEventListener( 'load', retargetLinks );
if ( typeof mw !== 'undefined' ) {
mw.hook( 'wikipage.content' ).add( retargetLinks );
}
} )();