MediaWiki:Common.js: Difference between revisions
m try some different js |
Dragon 12dk (talk | contribs) No edit summary |
||
| (15 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() { | |||
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 ); | |||
} | |||
} )(); | |||