MediaWiki:Common.js: Difference between revisions
Appearance
Content deleted Content added
No edit summary |
No edit summary |
||
| Line 52: | Line 52: | ||
}); |
}); |
||
$(document.body).on('mouseenter touchstart', '[rel=tooltip]', function (e) { |
|||
// Verhindert, dass der mobile Browser das Event als normalen Klick/Link-Öffnung wertet |
|||
// Code zum Anzeigen des Tooltips |
|||
if (e.type === 'touchstart') { |
|||
e.preventDefault(); |
|||
} |
|||
// --- HIER IHR CODE ZUM ANZEIGEN DES TOOLTIPS --- |
|||
// Beispiel: |
|||
$(this).find('.tooltip-content').show(); |
|||
}); |
}); |
||
// Optional: Schließen des Tooltips, wenn man auf Android irgendwo anders hintippt |
|||
$(document).on('touchstart', function (e) { |
|||
if (!$(e.target).closest('[rel=tooltip]').length) { |
|||
// --- HIER IHR CODE ZUM VERSTECKEN DES TOOLTIPS --- |
|||
// Beispiel: |
|||
$('.tooltip-content').hide(); |
|||
} |
|||
}); |
|||
/** |
/** |
||
Revision as of 17:24, 18 September 2026
/*
* This is the JS for all skins (for both mobile and desktop) on MediaWiki.org.
* Consider whether you can use a gadget with one of the options set to limit
* where it is loaded. See [[Extension:Gadgets#Options]].
*/
/* global mw, $ */
/**
* Hide prefix in category
*
* @source https://www.mediawiki.org/wiki/Snippets/Hide_prefix_in_category
* @rev 5
*/
var prefix = $.trim( $( '#mw-cat-hideprefix' ).text() ) || ( mw.config.get( 'wgTitle' ) + '/' );
$( '#mw-pages' ).find( 'a' ).text( function ( i, val ) {
return val.slice( 0, prefix.length ) === prefix ? val.slice( prefix.length ) : val;
} );
/**
* @source https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @revision 2017-05-16
*/
mw.loader.using( ['mediawiki.util'], function () {
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' ),
extraModule = mw.util.getParamValue( 'withModule' );
if ( extraCSS ) {
// WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
if ( /^MediaWiki:[^&<>=%#]*\.css$/.test( extraCSS ) ) {
mw.loader.load( '/w/index.php?title=' + encodeURIComponent( extraCSS ) + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
// WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
if ( /^MediaWiki:[^&<>=%#]*\.js$/.test( extraJS ) ) {
mw.loader.load( '/w/index.php?title=' + encodeURIComponent( extraJS ) + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
if ( extraModule ) {
if ( /^ext\.gadget\.[^,\|]+$/.test( extraModule ) ) {
mw.loader.load( extraModule );
} else {
mw.notify( 'Only gadget modules are allowed.', { title: 'Invalid withModule value' } );
}
}
});
$(document.body).on('mouseenter touchstart', '[rel=tooltip]', function (e) {
// Verhindert, dass der mobile Browser das Event als normalen Klick/Link-Öffnung wertet
if (e.type === 'touchstart') {
e.preventDefault();
}
// --- HIER IHR CODE ZUM ANZEIGEN DES TOOLTIPS ---
// Beispiel:
$(this).find('.tooltip-content').show();
});
// Optional: Schließen des Tooltips, wenn man auf Android irgendwo anders hintippt
$(document).on('touchstart', function (e) {
if (!$(e.target).closest('[rel=tooltip]').length) {
// --- HIER IHR CODE ZUM VERSTECKEN DES TOOLTIPS ---
// Beispiel:
$('.tooltip-content').hide();
}
});
/**
* Fix für den Kartographer / Leaflet.draw Fehler querySelectorAll("*,:x")
* Dieser Fehler tritt in modernen Browsern auf, wenn veraltete Leaflet-Bibliotheken
* einen ungültigen CSS-Selector verwenden.
*/
(function() {
try {
// Testen, ob der Browser bei diesem Selector abstürzt
document.querySelectorAll("*,:x");
} catch (e) {
// Falls ja (Sicherheitsfehler), patchen wir die Methode global
var nativeQuerySelectorAll = Element.prototype.querySelectorAll;
Element.prototype.querySelectorAll = function(selectors) {
if (selectors === "*,:x") {
// Wir ersetzen den ungültigen Selector durch einen sicheren
return nativeQuerySelectorAll.call(this, "*");
}
return nativeQuerySelectorAll.call(this, selectors);
};
console.log("Kartographer-Fix: querySelectorAll('*,:x') wurde erfolgreich umgeleitet.");
}
})();