Ed X: ISO 10646 und nodeValue()

Beitrag lesen

Hi Michael,

du hast dir -mit verlaub- ein sche..ßproblem rausgesucht.

Es ist in JavaScript lösbar, aber mit welchem aufwand.
Ich vermute du must text, der in einer datenbank hängt und bereits
entities enthält in html umwandeln? Warum du das nicht dirket in die
Htmlseite reinschreiben kannst ist mir nicht klar aber du wirst deine
erklärung haben ;-)

Was ist zu tun?
1. den verantwortlichen dafür finden, dass die dinger als unflexible
   und platzfressende entities in der datenbank sind. Diesen jemand
   nachdrücklich körperlich verwarnen ;-)
2. Entscheidung treffen ob serverseitig oder clientseitig arbeiten
   a) serverseitig ist meist schneller bei großen texten
   b) ist flexibler im umgang mit unicode

Da du mit DOM-kompatiblen scripts arbeitest, sollten alle Browser für
die du das script machst auch die erweiterte replace function
beherrschen (außer vermutlich Opera grrrrrrr....)

folgendes könnte helfen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
 <title>Untitled</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">
 <script>
 function wechsel() {
  txt = "zu ersetzender Text mit &#196;rgerstifter";
  matcher =  /&#([0-9]{2,5});/g
  txt = txt.replace(matcher ,
       function killThem(whole,numb) {
        return String.fromCharCode(parseInt(numb));
       }
       );
  document.getElementById("bla").firstChild.nodeValue = txt;
 }
 </script>
</head>

<body>

<a id="bla" href="javascript:void(0)" onclick="wechsel()">bla</a>

</body>
</html>

danke fuer den code! leider funktioniert es nur mit text[0], ich suche aber eine loesung wenn ich zeichenketten in "&#252;"-form habe, wie in text[1]... welches document-encoding muss ich denn da benutzen?

obenstehender Code funktioniert nur für dezimal unicode encodierte
Entities. Sollte das Mit hexadezimal codierten gemischt sein, würde
ich den Verantwortlichen nicht nur verwarnen :-)) + <eg>

bye eddie