Anzeige:
Ergebnis 1 bis 9 von 9

Thema: [JavaScript] String als Parameter

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.01.2004
    Beiträge
    27

    [JavaScript] String als Parameter

    Hallo zusammen,
    Ich kämpfe gerade mit einem unangenehmen Problem. Es geht um ein JavaScript, welches mir ein Pop-up Fenster öffnet. Unter Mozilla 1.7.3 und Firefox 1.0PRE RC1 funktioniert es wunderbar, jedoch nicht unter IE 6.0.
    Der Link wird mit Hilfe von JSP erzeugt, was heisst, dass der übergebe String für den Fensterinhalt auch dynamisch erzeugt wird. Ich habe soweit herausgefunden, dass mit dem übergebenen String etwas nicht in Ordnung ist, da wenn ich als Wert statisch z.B. "<html><head></head><body><pre>test</pre></body></html>" übergebe funktioniert es auch unter IE. In der Praxis jedoch steht anstelle von test ein String in Form einer geworfenen Exception in Java, welches wiederum nicht funktioniert. Den String habe ich soweit manipuliert, dass ich die Zeilenumbrüche durch <br> und die Tabulatoren durch Leerzeichen ersetzt habe.

    Was an dem String könnte noch dazu führen, dass das ganze nicht läuft?

    Danke und Gruss
    McHurt

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von McHurt
    Hallo zusammen,
    Was an dem String könnte noch dazu führen, dass das ganze nicht läuft?
    nicht maskierte Steuerzeichen wie ?, & und andere Schönheiten?

    so long

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.01.2004
    Beiträge
    27
    Ich denke nicht, dass dies der Grund ist. Ich hatte vergessen zu erwähnen, dass ich den String zuerst auf folgende Sonderzeichen untersuche und diese wenn sie vorkommen durch die entsprechen HTML-Codes ersetze:

    ' - apostrophe
    " - double-quote
    & - ampersand
    < - less-than
    > - greater-than
    non-breaking space
    © - copyright
    ® - registered trademark
    À - uppercase A, grave accent
    Á - uppercase A, acute accent
    Â - uppercase A, circumflex accent
    Ã - uppercase A, tilde
    Ä - uppercase A, umlaut
    Å - uppercase A, ring
    Æ - uppercase AE
    Ç - uppercase C, cedilla
    È - uppercase E, grave accent
    É - uppercase E, acute accent
    Ê - uppercase E, circumflex accent
    Ë - uppercase E, umlaut
    Ì - uppercase I, grave accent
    Í - uppercase I, acute accent
    Î - uppercase I, circumflex accent
    Ï - uppercase I, umlaut
    Ð - uppercase Eth, Icelandic
    Ñ - uppercase N, tilde
    Ò - uppercase O, grave accent
    Ó - uppercase O, acute accent
    Ô - uppercase O, circumflex accent
    Õ - uppercase O, tilde
    Ö - uppercase O, umlaut
    Ø - uppercase O, slash
    Ù - uppercase U, grave accent
    Ú - uppercase U, acute accent
    Û - uppercase U, circumflex accent
    Ü - uppercase U, umlaut
    Ý - uppercase Y, acute accent
    Þ - uppercase THORN, Icelandic
    ß - lowercase sharps, German
    à - lowercase a, grave accent
    á - lowercase a, acute accent
    â - lowercase a, circumflex accent
    ã - lowercase a, tilde
    ä - lowercase a, umlaut
    å - lowercase a, ring
    æ - lowercase ae
    ç - lowercase c, cedilla
    è - lowercase e, grave accent
    é - lowercase e, acute accent
    ê - lowercase e, circumflex accent
    ë - lowercase e, umlaut
    ì - lowercase i, grave accent
    í - lowercase i, acute accent
    î - lowercase i, circumflex accent
    ï - lowercase i, umlaut
    ì - lowercase i, grave accent
    í - lowercase i, acute accent
    î - lowercase i, circumflex accent
    ï - lowercase i, umlaut
    ð - lowercase eth, Icelandic
    ñ - lowercase n, tilde
    ò - lowercase o, grave accent
    ó - lowercase o, acute accent
    ô - lowercase o, circumflex accent
    õ - lowercase o, tilde
    ö - lowercase o, umlaut
    ø - lowercase o, slash
    ù - lowercase u, grave accent
    ú - lowercase u, acute accent
    û - lowercase u, circumflex accent
    ü - lowercase u, umlaut
    ý - lowercase y, acute accent
    þ - lowercase thorn, Icelandic
    ÿ - lowercase y, umlaut
    € - Euro symbol

    Plus wie gesagt Zeilenumbrüche durch <br> und Tabulatoren durch Leerzeichen. Weitere Sonderzeichen die sich in dem String verbergen sind nur gerade Klammern ([{}]), welche ich testweise übergeben habe und es hat geklappt.
    Oder könnte es sein, dass JavaScript (oder jedenfalls die MS-Implementation) eine Beschränkung der Länge des Strings vorgibt? Dieser ist nähmlich relativ lang (>15'000 Zeichen).

    Was mich auch irritiert, ist dass wenn ich mit dem Mauscursor beim IE über dem Link fahre, welcher das Pop-up öffnet (oder zumindest soll), der Cursor unverändert bleibt.


    Greetz
    McHurt

  4. #4
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    Wenn du glaubst, dass es an der Stringlänge liegt, dann probiers doch einfach mal aus:
    HTML-Code:
    <script type="text/javascript">
    <!--
    for (i=0;i<15000;i++) {
        document.write("a");
    }
    -->
    </script>
    Dann im Browserfenster kopieren und als String einfügen.

    Falls das funzt liegt es eventuell an der Schnittstelle, von der der String kommt.
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von McHurt
    Oder könnte es sein, dass JavaScript (oder jedenfalls die MS-Implementation) eine Beschränkung der Länge des Strings vorgibt? Dieser ist nähmlich relativ lang (>15'000 Zeichen).

    Aua, das ist krasser Missbrauch von GET-Variablen!
    Ich meine mich zu entsinnen, dass bei 2k Feierabend ist, danach ist die Auswertung reines Glücksspiel.

    Was du brauchst, sind POST-Variable, in die kannst du deine Romane verpacken.

    so long

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.01.2004
    Beiträge
    27
    Zitat Zitat von BlueJay

    Aua, das ist krasser Missbrauch von GET-Variablen!
    Ich meine mich zu entsinnen, dass bei 2k Feierabend ist, danach ist die Auswertung reines Glücksspiel.

    Was du brauchst, sind POST-Variable, in die kannst du deine Romane verpacken.
    Ne ne, mit GET und POST hat das nichts zu tun, der Link, der das Pop-up aufruft wird anhand einer JSP-Seite generiert. Wenn man den generierten HTML-Code betrachtet, dann steht der String, also der Inhalt des Pop-ups, in Form eines String-Literals in der Parameterliste des Funktionsaufrufes. Ich denke dabei eher an eine Beschränkung seitens JavaScript, was sich in meinen Augen auch gerade teilweise bestätigt hat.

    Ich habe nun ein 16'000 Zeichen langen String aus a's übergeben, auch bei dem verweigerte der IE die Ausgabe. Ansonsten poste ich noch den Code, aber ich glaube kaum dass dort der Bock sitzt. Sonst könnte ihr mir ja mal schon Alternativen vorschlagen


    Code:
    //Funktion, welche das Pop-up aufruft
    function errorPopup(site) {
        	x = screen.availWidth;
            y = screen.availHeight;
            var popupWindow = window.open('','','width='+x+',height='+y+',left=0,top=0,screenX='+x+',screenY='+y+',resizable=yes');
            popupWindow.document.write(site);
    }
    Code:
    //Java-String, der geprintet den HTML-Link darstellt
    "<a href='javascript:errorPopup(\"<html><body><pre>"+errorMsg+"</pre></body></html>\")'>error</a>"
    Danke jedenfalls schonmal für eure Hilfe!

    Greetz
    McHurt

  7. #7
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    [QUOTE=McHurt]

    Code:
            var popupWindow = window.open('','','width='+x+',height='+y+',left=0,top=0,screenX='+x+',screenY='+y+',resizable=yes');
            popupWindow.document.write(site);
    }
    Pack sicherheitsshalber hier ein document.writeln und document.close hinter, sonst bleiben Teile des neuen Dokumentes im Puffer hängen. Aber das war hauptsächlich im NN4.

    Code:
    //Java-String, der geprintet den HTML-Link darstellt
    "<a href='javascript:errorPopup(\"<html><body><pre>"+errorMsg+"</pre></body></html>\")'>error</a>"
    Hast du hier mal gecheckt, ob das Teil noch vollständig ist? Setze mal im Header-Teil zusammen und lasse mit alert ausgeben.

    Die nächste Station fürs alert wäre kurz vor dem open.

    Wenn was fehlt, lass im errorPopup den String für die Seite zusammensetzen und gebe nur die errorMsg als Parameter mit.

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.01.2004
    Beiträge
    27
    @BlueJay Danke für die Tipps!

    Mittlerweile habe ich mir ein kleines Script gebastelt:
    Code:
    <html>
      <head>
        <title>
          Javascript Playground
        </title>
      </head>
      <body>
        <h1>
          JavaScript Playground
        </h1>
        <script language="JavaScript" type="text/javascript">
          function errorPopup(site) {
            x = screen.availWidth;
            y = screen.availHeight;
            var popupWindow = window.open('','','width='+x+',height='+y+',left=0,top=0,screenX='+x+',screenY='+y+',resizable=yes');
            popupWindow.document.write(site);
          }
          var string = "a";
          var i = 0;
          while(string.length < 15000){
            string = string + "a";
            document.writeln('<a href=javascript:errorPopup(\"'+string+'\")>'+i+'</a><br>');
    	i++;
          }
        </script>  
      </body>
    </html>
    Wenn ich dieses Script im Internet Explorer ausführe, komme ich zum lustigen Ergebnis, dass ab 2056 Zeichen das Pop-up nicht mehr erscheint, der kuriose Cursor-Effekt tritt ab 4068 Zeichen auf. Kann mir das jemand bestätigen? Evtl. auch mit IE5?
    Mittlerweile habe ich auch mit Microsoft Kontakt aufgenommen, ihnen war dieses Verhalten auch unbekannt. Sie meinten, wenn sie sich bis gestern, 16:00 nicht bei mir melden würden, so wird das intern weitergereicht. Sie haben sich nicht gemeldet...

    Daher werde ich mich wohl oder übel nach einer andern Lösung umschauen müssen, wahrscheinlich gerade mit JSP selbst. Wenigstens wurden meine Ansichten gegenüber gewissen Produkten von gewissen proprietären Unternehmen bestätigt...

    Danke jedenfalls für eure Hilfe, ich melde mich sonst in ca. 4 -8 Monaten wieder, wenn der Patch erschienen ist


    Greetz
    McHurt

  9. #9
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    Zitat Zitat von McHurt
    Danke jedenfalls für eure Hilfe, ich melde mich sonst in ca. 4 -8 Monaten wieder, wenn der Patch erschienen ist
    Sehr optimistische Einschätzung....
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •