MediaWiki:Common.js

From The Volumes of Truth

Common.js

Note: After saving, you may have to bypass your browser's cache to see the changes. Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac); IE: hold Ctrl while clicking Refresh, or press Ctrl-F5; Konqueror:: simply click the Reload button, or press F5; Opera users may need to completely clear their cache in Tools→Preferences.

/* Any JavaScript here will be loaded for all users on every page load. */

/** Popup links 
 * Use <span class="pops">[http://www.wikipedia.com Wikipedia]</span> 
*  or <span class="pops">[[Homepage|Home]]</span> 
**/ 
addOnloadHook( function() { 
     var pops = function( elems ) { 
         for (var i=0; i<elems.length; i++) { 
             if ( !(' '+elems[i].className+' ').match( / pops / ) ) 
continue; 
             var anchs = elems[i].getElementsByTagName('a'); 
             for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank'; 
         } 
     }; 
     var bc = document.getElementById('bodyContent'); 
     var tags = ['span', 'div', 'table', 'td', 'th']; 
     for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( 
tags[i] ) ); 
 } ); 



/**
 * @source https://mediawiki.org/wiki/Snippets/Open_external_links_in_new_window
 * @version 2018-09-15
 */
mw.hook( 'wikipage.content' ).add( function( $content ) {
	// Second selector is for external links in Parsoid HTML+RDFa output (bug 65243).
	$content.find( 'a.external, a[rel="mw:ExtLink"]' ).each( function () {
		// Can't use wgServer because it can be protocol relative
		// Use this.href property instead of this.getAttribute( 'href' ) because the property
		// is converted to a full URL (including protocol)
		if ( this.href.indexOf( location.protocol + '//' + location.hostname ) !== 0 ) {
			if ( this.rel.indexOf( 'noopener' ) < 0 ) {
				this.rel += ' noopener'; // the leading space matters, rel attributes have space-separated tokens
			}
			if ( this.rel.indexOf( 'noreferrer' ) < 0 ) {
				this.rel += ' noreferrer'; // the leading space matters, rel attributes have space-separated tokens
			}
			this.target = '_blank';
		}
	} );
} );



/**
 * @source https://mediawiki.org/wiki/Snippets/Open_specific_external_links_in_new_window
 * @version 2018-09-15
 */
$( function () {
	$( '#mw-content-text' ).on( 'click', '.newwin > a', function () {
		var otherWindow = window.open();
		otherWindow.opener = null;
		otherWindow.location = this;
		return false;
	} );
} );
Click to share:
this is a PNG