Aller au contenu

MediaWiki:Gadget-ArchiveLinks.js

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 30 juin 2022 à 01:16 et modifiée en dernier par Od1n (discuter | contributions) (j'ajoute la classe "noarchive" au nouveau modèle {{Classes début infobox}} que je viens de déployer (il reste vraiment très peu d'utilisations directes de la classe "infobox_v3") ; c'est plus propre de ne pas hardcoder "infobox_v3" ici, ça permet d'optimiser le javascript (sélecteur sur une seule classe), et ça s'applique maintenant aussi aux infoboxes V2). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Application de [[Wikipédia:Prise de décision/Système de cache]].
 * Un <span class="noarchive"> autour d'un lien l'empêche d'être pris en compte.
 *
 * {{Catégorisation JS|ArchiveLinks}}
 */

if ( !window.no_external_cache && ( mw.config.get( 'wgNamespaceNumber' ) === 0 || mw.user.options.get( 'gadget-ExtendedCache' ) ) ) {
	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		'use strict';

		var hasNativeClosest = !!Element.prototype.closest;

		$content.find( '.mw-parser-output' ).find( '.external' ).each( function ( _, link ) {
			if ( link.tagName !== 'A' ) {
				return;
			}

			var hostname = link.hostname;

			if ( /(^|\.)wiki([pm]edia|data)\.org$/.test( hostname )
				|| hostname === 'tools.wmflabs.org'
				|| hostname === 'archive.wikiwix.com' 
				|| hostname === 'wikiwix.com'
				|| hostname === 'web.archive.org'
			) {
				return;
			}

			if ( hasNativeClosest ) {
				if ( link.closest( '.noarchive' ) ) {
					return;
				}
			} else {
				if ( $( link ).closest( '.noarchive' ).length ) {
					return;
				}
			}

			// sécurité : attention à échapper les quotes dans les attributs

			var href = 'https://archive.wikiwix.com/cache/?url=' + encodeURIComponent( link.href );
			var title = 'archive sur Wikiwix';

			var archiveLink = '<a href="' + href + '" title="' + title + '">archive</a>';

			link.insertAdjacentHTML( 'afterend', '<small class="cachelinks">\u00a0[' + archiveLink + ']</small>' );
		});
	});
}