MediaWiki:Gadget-EtymologySectionFragment.js
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
- Opera: Presiona Ctrl+F5.
/**
* Enlaza correctamente a la sección de etimología indicada en el URI
* Basado en mediawiki.action.view.redirect.js de mediawiki/core
* Autor: [[User:Peter Bowman]]
*/
var m;
function extractEtymologyFragment( hash ) {
if ( !hash ) {
return false;
}
m = hash.match( /^#(.+)_(\d)$/ );
return ( m !== null );
}
if ( extractEtymologyFragment( location.hash ) ) {
$( function () {
var fragment, $section, $target,
profile = $.client.profile(),
langName = decodeURIComponent( m[ 1 ] ),
etymId = m[ 2 ],
normalized = location.href.replace( /#.*$/, '' );
if ( $( '.lemma' ).length ) {
return; // antigua estructura
}
// Detecta la versión para móviles
if ( document.body.classList.contains('mw-mf') ) {
$section = $( mw.format( 'h2:has(#$1)', langName ) ).next();
} else {
$section = $( document.getElementById( langName ) )
.parents( 'h2' )
.nextUntil( 'h2' );
}
if ( !$section.length ) {
return;
}
$target = $section.find( mw.format( '.mw-headline[id^="Etimología_$1"]', etymId ) );
fragment = $target.attr( 'id' ) || langName;
history.replaceState( history.state, document.title, normalized + '#' + fragment );
if ( $target.length ) {
$target.get( 0 ).scrollIntoView();
}
} );
}