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
//Dokumentation unter [[Benutzer:Schnark/js/highlight]] <nowiki>
//verwendet $.escapeRE aus jquery.mwExtension.js, $.isFunction aus jquery.js und mw.util.$content aus mediawiki.util.js
/*global mw: true */
/*jshint boss: true *///while (treffer = expr.exec())
(function($, libs){
var highlight = {
version: 1.4,
count: 0, //Anzahl der Treffer
span: 'mark', //mit diesem Element werden die Hervorhebungen gekennzeichnet
/* Hebt einen bestimmten Ausdruck farblich hervor
*
* expr: regulärer Ausdruck mit zwei Klammern: /(vorne)(hervorheben)hinten/g
* hint: mixed (optional, Standard: kein Hinweis)
* string: Hinweis
* oder
* function: wird mit Treffer aufgerufen, liefert Hinweis zurück
* color: mixed (optional, Standard: gelb)
* string: Hintergrundfarbe
* oder
* function: wird mit Treffer aufgerufen, liefert Hintergrundfarbe zurück
* css_class: mixed (optional, Standard: keine Klasse)
* string: Klasse
* oder
* function: wird mit Treffer aufgerufen, liefert Klasse zurück
*
* Rückgabe: Anzahl der gefundenen Treffer
*/
highlight: function(expr, hint, color, css_class) {
highlight.count = 0;
highlight.searchWithinNode(mw.util.$content[0], expr, color || 'yellow', hint, css_class);
return highlight.count;
},
//Kopiert aus [[MediaWiki:Gadget-Rechtschreibpruefung.js]] und [[Wikipedia:Bookmarklets]]
searchWithinNode: function (node, expr, color, hint, css_class) {
if (node.nodeType === 3) {
var treffer, new_spans = 0,
color_func = $.isFunction(color),
hint_func = $.isFunction(hint),
class_func = $.isFunction(css_class),
pos, text, spannode, middlebit, endbit, middleclone;
while (treffer = expr.exec(node.data)) {
pos = treffer.index + treffer[1].length;
text = treffer[2];
spannode = document.createElement(highlight.span);
spannode.style.backgroundColor = color_func ? color(text) : color;
if (hint) {
spannode.title = hint_func ? hint(text) : hint;
}
if (css_class) {
spannode.className = class_func ? css_class(text) : css_class;
}
middlebit = node.splitText(pos);
endbit = middlebit.splitText(text.length);
middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
highlight.count++;
new_spans++;
}
return new_spans;
} else if (node.nodeType === 1 && node.childNodes &&
node.tagName.toLowerCase() !== 'script' &&
node.tagName.toLowerCase() !== 'style' &&
node.tagName.toLowerCase() !== 'form') {
for (var child = 0; child < node.childNodes.length; child++) {
child = child + highlight.searchWithinNode(node.childNodes[child], expr, color, hint, css_class);
}
}
return 0;
},
highlightWord: function(word, hint, color, css_class) {
var expr = new RegExp ('()(\\b' + $.escapeRE(word) + '\\b)');
return highlight.highlight(expr, hint, color, css_class);
},
highlightString: function(word, hint, color, css_class) {
var expr = new RegExp ('()(' + $.escapeRE(word) + ')');
return highlight.highlight(expr, hint, color, css_class);
}
};
libs.highlight = highlight;
$(document).trigger('loadWikiScript', ['Benutzer:Schnark/js/highlight.js', highlight]);
})(jQuery, mw.libs);
//</nowiki>