Daniel Thoma: Live Connect

Beitrag lesen

Hallo Someone,

Mal ganz nebenbei. Zitiere nicht immer alles sondern nur das was du brauchst.
Zum Thema.
Das Problem ist warscheinlich, das du HTML-code ausgibst der interpretiert wird und da du erst mit
der Tabelle anfängst auch noch falsch.
Du must also alle Markup-Zeichen schützen.
Ich habe dazu die escape-funktion verwendet.
Das Problem dabei ist, das die geschützten Zeichen (#5C) auch so dargestellt werden.
Deshalb muß man sie in die HTML-variante umwandeln: (&#x5C)
Netscape akzeptiert aber nur dezimale engaben.
Deshalb wandle ich die Hexadezimalzahl in eine Dezimalzahl um.
(Der code dazu ist aus SELFHTML)

Beispiel:

function myEscape(source)
{
source = escape(source.substring(start,ende));
var pos = 0;
while((pos = source.search(/%(..)/)) != -1)
{
  source = source.substring(0,pos) + "&#" + xd(RegExp.$1) + ";" + source.substring(pos + 3, source.length);
}
return source;
}

function xd(x)
{
max = 8;
if(x.length > max)
{
  return; //Zahl zu groß
}
var e = new Array();
var z = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
var d = 0, chk = 0;

for(i=0; i < x.length; i++)  
{  

for(j=0; j <= 16; j++)
  {
   if(x.substring(i,i+1) == z[j])
   {
    chk = 1; e[i] = j;
   }
  }
  if(chk == 0)
  {
   return; //Unerlaubte ziffer;
  }
}
for(i=0;i<x.length;i++)
d = d + e[i] * Math.pow(16,x.length-i-1)
return d;
}

Den auszugebenden String must du der Fuktion myEscape übergeben.
Sie gibt den geschützten HTML-Code zurück.
Es geht vieleicht auch einfacher, aber das geht mit Strings mit beliebigen UNICODE-Zeichen.

Tschüs

Daniel