MediaWiki:Common.js/Ready.js

MediaWiki-Schnittstellenseite
< MediaWiki:Common.js
Version vom 13. Juli 2023, 12:45 Uhr von Markus Scholz (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
// Das Script Ready.js beinhaltet Programmcode, der nach dem Laden einer Seite ausgeführt wird.

$( document ).ready( function ( ) {

	// Parameter des Querystrings zurückgeben, siehe Quelle https://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter
	var querystring = function () {
		var query_string = {};
		var query = window.location.search.substring(1);
		var vars = query.split("&");
		for (var i=0;i<vars.length;i++) {
			var pair = vars[i].split("=");
			if (typeof query_string[pair[0]] === "undefined") {
				query_string[pair[0]] = pair[1];
			} else if (typeof query_string[pair[0]] === "string") {
				var arr = [ query_string[pair[0]], pair[1] ];
				query_string[pair[0]] = arr;
			} else {
				query_string[pair[0]].push(pair[1]);
			}
		} 
		return query_string;
	} ();

	// Parameter marker auslesen
	var strMarker = querystring.marker;
	if (typeof(strMarker) !== 'undefined') {
		var arrMarker = strMarker.split(' ');

		// Suchbegriffe markieren		
		$('div#bodyContent').highlight(arrMarker, {element: 'span', className: 'marker'});

		// Betroffene Fragen ausklappen
		$('div.faq.unit').each( function() {
			if ($(this).find('span.marker').length > 0){
				$(this).addClass('preselection');
			}
		});		
	}

	// Parameter question auslesen
	var strQuestion = querystring.question;
	if (typeof(strQuestion) !== 'undefined') {

		// Ausgewählte Frage ausklappen
		$('div.faq.unit').each( function() {
			if ($(this).find('#' + strQuestion).length > 0){
				$(this).addClass('preselection');
			}
		});		
	}

	// Häufige Fragen formatieren
	var hide = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAD1BMVEX////d3d2ampqxsbF5eXmCtCYvAAAAAXRSTlMAQObYZgAAADBJREFUeF6dzNEJACAMA1HdINQJCp1Ebv+ZlLYLaD4f4cbnDNi6MAO8KCHJ+7X02j3mzgMQe93HcQAAAABJRU5ErkJggg==';
	var show = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEX///95eXnd3d2dnZ3aAo3QAAAAAXRSTlMAQObYZgAAADFJREFUeF5dyzEKACAMA0CXolNe2Id09Kl5igZahWY4AiGjZwmIuS9GEcJfY63Ix88Bol4EYP1O7JMAAAAASUVORK5CYII=';
	$('div.faq.unit').each( function() {
		var $that = $(this);
		var icon = $that.hasClass('preselection') ? show : hide;
		$(this).children('.faq.question').each( function() {
			$(this).prepend('<span class="faq icon"><a><img src="'+icon+'" /></a></span>').click( function() {
				var icon = $that.toggleClass('preselection').hasClass('preselection') ? show : hide;
				$(this).find('span.faq.icon img').attr('src', icon);
				if ( icon == show ) {
					$(this).siblings(':not(.faq.question)').stop(true, true).fadeOut('fast');
				} else {
					$(this).siblings(':not(.faq.question)').stop(true, true).fadeIn('fast');
				}
			}).click();
		});
	});

});