Benutzer:Schnark/js/antispoof.js
Erscheinungsbild
< Benutzer:Schnark | js
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/antispoof.js]] <nowiki>
var antispoof = {
unsichtbar: '\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F\u00AD\u2000-\u2008\u200A-\u200D\u200F\u2028-\u202F\u205F-\u206F', //unsichtbare Zeichen außer TAB (kommt in Versionsunterschieden vor), LF, CR, SPACE, NBSP, THINSPACE, LRM (nur für Spezialseiten)
punkt: '\u0009\u000A\u000D\u0020-\u0040\u005B-\u0060\u007B-\u007E\u00A0-\u00AC\u00AE-\u00BF\u00D7\u00F7\u02B0-\u02FF\u2009\u2010-\u2027\u2030-\u205E\u2190-\u22FF', //Satz- und Leerzeichen, Zahlen, Abstandsbestimmung u. ä.
latein: '\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02AF\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF', //lateinische Buchstaben (ink. IPA)
sonstiges: '\u0530-\u1DBF\u2070-\u20CF\u2100-\u218F\u2300-\u2C5F\u2C80-\uA71F\uA800-\uD7FF\uF900-\uFE1F\uFE30-\uFFEF', //Buchstaben aus anderen Alphabeten und sonstige Zeichen
griechisch: '\u0370-\u03FF\u1F00-\u1FFF', //griechische Buchstaben
kyrillisch: '\u0400-\u052F', //kyrillische Buchstaben
kombinierend: '\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F', //kombinierende Zeichen
verboten: '\uE000-\uF8FF\uFFF0-\uFFFD', //privater Gebrauch
unerwuenscht: '\u2010\u2011\u2012\u2014\u2015\u2043\uFE50-\uFE6F\uFF00-\uFFEF', //aus irgendwelchen Gründen nicht erwünscht, aber oben nicht erfasst (komische Striche, Darstellungsvarianten, etc.)
benennen: '\u00A0\u0250-\u02AF\u2009\u2013\u2212\u2500', //nur mit Tooltip benennen
regexp_unsichtbar: null, // /()((?:^|.)[unsichtbar](?:.|$))/g
regexp_verboten: null, // /()([verboten]+)/g
regexp_kombinierend: null, // /()([kombinierend].)/g
regexp_latein: null, // /([^latein punkt unsichtbar kombinierend])([latein]+)/g
regexp_griechisch: null, // /([^griechisch punkt unsichtbar kombinierend])([griechisch]+)/g
regexp_kyrillisch: null, // /([^kyrillisch punkt unsichtbar kombinierend])([kyrillisch]+)/g
regexp_sonstiges: null, // /([^sonstiges punkt unsichtbar kombinierend])([sonstiges]+)/g
regexp_unerwuenscht: null, // /()([unerwuenscht]+)/g
regexp_benennen: null, // /()([benennen])/g
init: function() {
with (antispoof) {
if (wgNamespaceNumber != -1) unsichtbar += '\u200E'; //!RL!
regexp_unsichtbar = new RegExp ('()((?:^|.)[' + unsichtbar + '](?:.|$))', 'g');
regexp_verboten = new RegExp ('()([' + verboten + ']+)', 'g');
regexp_kombinierend = new RegExp ('()([' + kombinierend + '].)', 'g');
regexp_latein = new RegExp ('([^' + latein + punkt + unsichtbar + kombinierend + '])([' + latein + ']+)', 'g');
regexp_griechisch = new RegExp ('([^' + griechisch + punkt + unsichtbar + kombinierend + '])([' + griechisch + ']+)', 'g');
regexp_kyrillisch = new RegExp ('([^' + kyrillisch + punkt + unsichtbar + kombinierend + '])([' + kyrillisch + ']+)', 'g');
regexp_sonstiges = new RegExp ('([^' + sonstiges + punkt + unsichtbar + kombinierend + '])([' + sonstiges + ']+)', 'g');
regexp_unerwuenscht = new RegExp ('()([' + unerwuenscht + ']+)', 'g');
regexp_benennen = new RegExp ('()([' + benennen + '])', 'g');
$j(mark); //!RL!
}
},
mark: function() {
var count = 0;
count += highlight.highlight(antispoof.regexp_unsichtbar, function (x) {
if (x.indexOf('\u00AD') != -1) return 'An dieser Stelle steht ein weiches Trennzeichen!';
if (x.indexOf('\u2009') != -1) return 'Dieses unsichtbare Zeichen ist ein schmales Leerzeichen!';
if (x.indexOf('\u200B') != -1) return 'An dieser Stelle steht ein nullbreites Leerzeichen!';
if (x.indexOf('\u200C') != -1) return 'An dieser Stelle steht ein nullbreiter Nichtverbinder!';
if (x.indexOf('\u200D') != -1) return 'An dieser Stelle steht ein nullbreiter Verbinder!';
if (x.indexOf('\u200E') != -1) return 'An dieser Stelle steht ein Links-nach-rechts-Zeichen!';
if (x.indexOf('\u200F') != -1) return 'An dieser Stelle steht ein Rechts-nach-links-Zeichen!';
return 'Dieses unsichtbare Zeichen ist kein normales Leerzeichen!';
}, '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_verboten, 'Dieses Zeichen hat keine festgelegte Darstellung und hat daher in einem Text normalerweise nichts verloren!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_unerwuenscht, 'Dieses Zeichen ist in normalen Texten unerwünscht!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_kombinierend, 'Dieses Zeichen ist aus zwei Zeichen zusammengesetzt, einem Akzent und einem Buchstaben!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_griechisch, 'Dieses Zeichen ist ein griechischer Buchstabe, anders als das vorhergehende!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_kyrillisch, 'Dieses Zeichen ist ein kyrillischer Buchstabe, anders als das vorhergehende!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_sonstiges, 'Dieses Zeichen ist ein Buchstabe aus einem sonstigen Alphabet, anders als das vorhergehende!', '#FF8080', 'antispoof-mark');
count += highlight.highlight(antispoof.regexp_latein, 'Dieses Zeichen ist ein lateinischer Buchstabe, anders als das vorhergehende!', '#FF8080', 'antispoof-mark');
highlight.highlight(antispoof.regexp_benennen, function (x) {
if (x == '\u00A0') return 'nbsp';
if (x == '\u2009') return 'thinspace';
if (x == '\u2013') return 'Gedanken-/Bis-/etc. -strich';
if (x == '\u2212') return 'Minus';
if (x == '\u2500') return 'horizontale Linie';
if (x.search(/[\u0250-\u02AF]/) > -1) return 'IPA-Zeichen';
return '\\u' + x.charCodeAt(0).toString(16);
}, 'transparent');
if (count > 0) {
$j('#firstHeading').after('<span class="antispoof-count noprint">' + count + ' verdächtige Zeichen gefunden!</span>'); //!RL!
appendCSS('.antispoof-mark {z-index: 20; position: relative;}'); //!RL!
$j(document.body).append('<div id="antispoof-overlay" style="position:absolute; top:0; left:0; z-index:10; width:100%; height:100%; background-color:#000; filter:alpha(opacity=60); opacity:0.60;"></div>'); //!RL!
$j('#antispoof-overlay').hide(); //!RL!
$j('.antispoof-count, #antispoof-overlay').click(function(){$j('#antispoof-overlay').css('height', $j(document).height()).toggle();}); //!RL!
}
}
};
if (typeof jsmodules != 'undefined') jsmodules.after('[[Benutzer:Schnark/js/antispoof.js]]');
//javascript:void($j('.antispoof-mark').css({padding: '10px'}))
antispoof.init();
//</nowiki>