MediaWiki:Gadget-mailtoURLrecover.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/// Gadget-mailtoURLrecover.js
// Make obfuscated mailto: URL functional.
// PerfektesChaos@de.wikipedia 2024
/// @license: CC-by-sa/4.0 GPLv3
// <nowiki>
/* global window: false                                                */
/* jshint bitwise:true, curly:true, eqeqeq:true, latedef:true,
          laxbreak:true,
          nocomma:true, strict:true, undef:true, unused:true           */
( function ( mw, $ ) {
   "use strict";

   var GLOBAL =  { signature: "mailtoURLrecover",
                   search:    "mailto-url-obfuscated",
                   replace:   [ "%5B%20@%20%5D" ]
                 };



   function find( at, around ) {
      // Handler for presumable occurrence
      // Precondition:
      //    at      -- number, of occurrence, ignored
      //    around  -- DOM object of wrapper
      // Uses:
      //    >  GLOBAL.replace
      //    >  GLOBAL.search
      var $e = $( around ),
          $a = $e.find( "a" ),
          i, k, s, swap;
      if ( $a.length === 1 ) {
         swap = $a.attr( "href" );
         if ( swap   &&
              swap.substring( 0, 7 ) === "mailto:" ) {
            for ( i = 0;  i < GLOBAL.replace.length;  i++ ) {
               s = GLOBAL.replace[ i ];
               k = swap.indexOf( s, 7 );
               if ( k > 0 ) {
                  swap = swap.substring( 0, k )
                         + "@"
                         + swap.substring( k + s.length );
                  $a.attr( "href", swap );
                  $e.removeClass( GLOBAL.search );
                  break;   // for i
                }
            }   // for i
         }
      }
   }   // find()



   function first() {
      // Start execution
      // Precondition:
      //    DOM ready
      // Uses:
      //    >  GLOBAL.search
      //    (find)
      var $got = $( "." + GLOBAL.search );
      $got.each( find );
   }   // first()



   $( first );
}( window.mediaWiki, window.jQuery ) );
// </nowiki>