Liebe JavaScriptler,
ich verwende eine trim()-Funktion, die in ihrer Funktionalität an PHP angelehnt ist. Dabei sollen unter Anderem sowohl Leerzeichen (ASCII-Code 32), als auch geschützte Leerzeichen (ASCII-Code 160) entfernt werden. Das sieht bei mir so aus:
if (typeof(new String().trim) != "function") {
String.prototype.trim = function () {
var ltrim = new RegExp("^[" + String.fromCharCode(32) + String.fromCharCode(160) + "\t\r\n]+", "g");
var rtrim = new RegExp("[" + String.fromCharCode(32) + String.fromCharCode(160) + "\t\r\n]+$", "g");
s = this.replace(ltrim, "");
s = s.replace(rtrim, "");
return s;
}
}
In den von mir getesteten Browsern (FF, IE, Opera) ergibt obiger Code das gewünschte Ergebnis - bis auf Webkit-basierte Browser (Safari, Google Chrome). Dort wird das geschützte Leerzeichen _nicht_ entfernt.
Beispiel:
javascript:alert("'" + String.fromCharCode(160).trim() + "'")
Obige Zeile in der Adresszeile des Browsers eingegeben ergibt z.B. in Safari
folgende Ausgabe: ' '
Warum ist das so und wie erhalte ich ein sicheres Entfernen dieses geschützten Leerzeichens?
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)