MSIE kopiert bei a den title Inhalt irrtümlich in textnode
Beat
- javascript
0 hotti
Die folgende Funktion läuft tadellos im Firefox.
MSIE aber ersetzt falsch.
Der Inhalt von href ist ein mailto-link der Form:
<a onmouseover="mailto(this)" title="someone[at]example.org?subject=Anmeldung für Wanderung am 2010-08-15 &body=Ich möchte eine Anmeldung tätigen für:%0ADatum: 2010-08-15%0A ... %0A">webmaster2008[at]elcappuccino.ch</a><br>
function mailto(el){
el.innerHTML = el.innerHTML.replace(/[at]/i,'@');
el.title = el.title.replace(/[at]/i,'@');
el.href= "mailto:" + el.title;
}
MSIE 8 macht aber den Fehler, dass es den Inhalt von title auf innerHTML kopiert. Dadurch erscheint der mailto:?anhang im Label des Links.
Es ist, als ob MSIE 8 folgenden Code ausführt:
function mailto(el){
el.innerHTML = el.innerHTML.replace(/[at]/i,'@');
el.title = el.title.replace(/[at]/i,'@');
el.href= "mailto:" + el.title;
el.innerHTML = el.title; // <---
}
Der Fehler verschwindet auch dann nicht wenn ich die Zeile
el.href= "mailto:" + el.title;
durch
el.href= "mailto:" + encodeURI(el.title);
ersetze.
Wodurch ist das bedingt?
Was kann ich tun?
mfg Beat
hi,
Was kann ich tun?
die Komponenten des URI einzeln encoden mit encodeURIComponent() und den URI RFC gerecht (lückenlos%20) zusammensetzen.
Ungetestet,
Hottüüüü