Merowinger: Netscape 4.6 unterstützt document.write('<script>'); nicht

... Und genau da liegt mein Problem.
Ich muss per document.write eine Seite erstellen, in der ein Scriptbereich eingebunden ist. Netscape 4.6 ignoriert aber den kompletten Bereich zwischen den Script-Tags und gibt diesen Bereich nicht wieder.

Codeauszug:

m=parent.frames[1].document;
m.open('text/html');
m.write('<html><head><script type="text/javascript">');
m.write('function openFolder(id){parent.openFolder(this,id);}');
m.write('</script></head>');

Der head-Tag geht auf und geht wieder zu, aber alles dazwischen wird nicht wiedergegeben. In Mozilla und IE funktioniert dies aber fehlerfrei.

Gibt es eine Alternative zu document.write, mit der ich den Scriptteil in Netscape schreiben kann?

  1. Hallo Merowinger.

    m=parent.frames[1].document;
    m.open('text/html');
    m.write('<html><head><script type="text/javascript">');
    m.write('function openFolder(id){parent.openFolder(this,id);}');
    m.write('</script></head>');

    Du musst " und / escapen. Also:

    m=parent.frames[1].document;
    m.open('text/html');
    m.write('<html><head><script type="text/javascript">');
    m.write('function openFolder(id){parent.openFolder(this,id);}');
    m.write('</script></head>');

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:( ls:# js:|
    1. Hi,

      m=parent.frames[1].document;
      m.open('text/html');
      m.write('<html><head><script type="text/javascript">');
      m.write('function openFolder(id){parent.openFolder(this,id);}');
      m.write('</script></head>');
      Du musst " und / escapen. Also:

      Nö.
      Die " können in einem '-begrenzten String ohne escapen leben.

      / muß gar nicht escaped werden - unter gewissen Umständen darf die Zeichenfolge </ nicht auftreten (nämlich wenn das Script im (X)HTML-Dokument steht).

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hallo MudGuard.

        Die " können in einem '-begrenzten String ohne escapen leben.

        Hm... Bisher hatte ich diesbezüglich schon ein paar Probleme, die sich durch das escapen lösen ließen.

        / muß gar nicht escaped werden - unter gewissen Umständen darf die Zeichenfolge </ nicht auftreten (nämlich wenn das Script im (X)HTML-Dokument steht).

        Das war bei mir der Fall.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:( ls:# js:|
        1. Escapen nützt leider nichts und das Auseinanderziehen funktioniert leider auch nicht. Beides schon probiert.

          Aber auf jeden Fall danke für die schnelle Antwort.
          Mero

          1. hallo Merowinger,

            das mit dem escapen von den " und </script> würde ich auf jeden Fall immer machen.

            aber was auf jeden fall fehlt ist ein document.close() am schluss.
            erst dann, wird das dokument sicher in den browser geschrieben.
            document.open() wird implizit mit dem ersten document.write() ausgeführt. kannst also weglassen.

            gruss

            LenaLuna

            1. hallo Merowinger,

              das mit dem escapen von den " und </script> würde ich auf jeden Fall immer machen.

              aber was auf jeden fall fehlt ist ein document.close() am schluss.
              erst dann, wird das dokument sicher in den browser geschrieben.
              document.open() wird implizit mit dem ersten document.write() ausgeführt. kannst also weglassen.

              gruss

              LenaLuna

              Hi LenaLuna.
              document.close hab ich auch geschrieben, aber das nützt nichts.
              egal, ob ich den scriptteil im body oder im head haben will, es wird einfach komplett rausgeblockt und nicht geschrieben.

              1. Hallo,

                egal, ob ich den scriptteil im body oder im head haben will, es wird einfach komplett rausgeblockt und nicht geschrieben.

                hast du mal ein Beispiel online?

                Grüsse

                Cyx23

                --
                Goldschmiedekurse Goldschmiedekurse  Workshop Schmuckgestaltung Trauringe selber machen
                1. Hallo,

                  egal, ob ich den scriptteil im body oder im head haben will, es wird einfach komplett rausgeblockt und nicht geschrieben.

                  hast du mal ein Beispiel online?

                  Grüsse

                  Cyx23

                  online nicht, aber ich kann dir einfach mal ein beispiel posten, das auch nicht funktioniert. Der erste Link funktioniert noch, aber wenn man sich dann den Quelltext ansieht ist von der function show2 absolut nichts zu sehen. Im IE und Mozilla hingegen funktioniert das ohne Probleme.

                  <html>
                  <head>
                  <script>
                  function show(){
                  var m;
                  m=this.document;
                  m.open('text/html');
                  m.write('<HTML><HEAD><script>function show2(){alert("Test");}</script>');
                  m.write('</HEAD><BODY><a href=javascript:show2();>Show2</a>');
                  m.write('</BODY></HTML>');
                  m.close();
                  }
                  </script>
                  </head>
                  <body>
                  <a href=javascript:show();>Show</a></body></html>

                  1. 你好 Merowinger,

                    schoen waere es, wenn du demnaechst code-Bloecke benutzen wuerdest:

                      
                    <html>  
                    <head>  
                    <script>  
                    [code lang=javascript]  
                    function show(){  
                    var m;  
                    m=this.document;  
                    m.open('text/html');  
                    m.write('<HTML><HEAD><script>function show2(){alert("Test");}<\/script>');  
                    m.write('<\/HEAD><BODY><a href=javascript:show2();>Show2<\/a>');  
                    m.write('<\/BODY><\/HTML>');  
                    m.close();  
                    }  
                    
                    ~~~</script>  
                    </head>  
                    <body>  
                    <a href=javascript:show();>Show</a></body></html>  
                    [/code]  
                      
                    Das macht es viel einfacher, den Quelltext zu lesen.  
                      
                    再见,  
                     克里斯蒂安  
                    
                    -- 
                    Der Verstand ist der Hausherr, der Koerper sein Gast.  
                    
                    
                  2. Hallo,

                    die beiden folgenden Varaianten funktionieren bei mir mit Netscape 4,
                    allerdings hab ich auf dem Rechner gerade keinen .6 parat, sonst
                    müßte ich den morgen nochmal raussuchen wenn es nicht klappt:

                    <html><head>
                    <script>
                    function show(){
                    var m;
                    m=this.document;
                    m.open('text/html');
                    m.write('<HTML><HEAD>');
                    m.write('</HEAD><BODY onload="show2=function(){alert(2);}">'+
                    '<a href=javascript:show2();>Show2</a>');
                    m.write('</BODY></HTML>');
                    m.close();
                    }
                    </script>
                    </head>
                    <body>
                    <a href=javascript:show();>Show</a>
                    </body></html>

                    <html><head>
                    <script>
                    function show(){
                    var m;
                    m=this.document;
                    m.open('text/html');
                    m.write('<HTML><HEAD><script>show3=function(){alert(3);}</script>');
                    m.write('</HEAD><BODY><a href=javascript:show3();>Show3</a>');
                    m.write('</BODY></HTML>');
                    m.close();
                    }
                    </script>
                    </head>
                    <body>
                    <a href=javascript:show();>Show</a>
                    </body></html>

                    Grüsse

                    Cyx23

                    1. Hallo,

                      die beiden folgenden Varaianten funktionieren bei mir mit Netscape 4,
                      allerdings hab ich auf dem Rechner gerade keinen .6 parat, sonst
                      müßte ich den morgen nochmal raussuchen wenn es nicht klappt:

                      <html><head>
                      <script>
                      function show(){
                      var m;
                      m=this.document;
                      m.open('text/html');
                      m.write('<HTML><HEAD>');
                      m.write('</HEAD><BODY onload="show2=function(){alert(2);}">'+
                      '<a href=javascript:show2();>Show2</a>');
                      m.write('</BODY></HTML>');
                      m.close();
                      }
                      </script>
                      </head>
                      <body>
                      <a href=javascript:show();>Show</a>
                      </body></html>

                      <html><head>
                      <script>
                      function show(){
                      var m;
                      m=this.document;
                      m.open('text/html');
                      m.write('<HTML><HEAD><script>show3=function(){alert(3);}</script>');
                      m.write('</HEAD><BODY><a href=javascript:show3();>Show3</a>');
                      m.write('</BODY></HTML>');
                      m.close();
                      }
                      </script>
                      </head>
                      <body>
                      <a href=javascript:show();>Show</a>
                      </body></html>

                      Grüsse

                      Cyx23

                      Wunderbar.
                      Es funktioniert beides.

                      Vielen herzlichen Dank.

                      Mero

                    2. Bei deinem zweiten Beispiel erscheint der Scriptteil zwar auch nicht im Quellcode, aber trotzdem funktioniert es. Sehr seltsam.
                      Naja. Egal. Hauptsache es geht. Vielen Dank

                  3. <html>
                    <head>
                    <script>
                    function show(){
                    var m;
                    m=this.document;
                    m.open('text/html');
                    m.write('<HTML><HEAD><script>function show2(){alert("Test");}</script>');
                    m.write('</HEAD><BODY><a href=javascript:show2();>Show2</a>');
                    m.write('</BODY></HTML>');
                    m.close();
                    }
                    </script>
                    </head>
                    <body>
                    <a href=javascript:show();>Show</a></body></html>

                    Mal abgesehen ob das funktioniert oder nicht, der enstehende HTML Code ist ziemlicher Murks, was hast du eigentlich vor?

                    Struppi.

      2. Hi,

        / muß gar nicht escaped werden - unter gewissen Umständen darf die Zeichenfolge </ nicht auftreten (nämlich wenn das Script im (X)HTML-Dokument steht).

        ich erinnere mich dunkel, dass document.write("</script>") in NC 4x problematisch ist und besser etwa so zerlegt werden sollte:
        document.write("</sc" + "ript>")

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Hi,

          / muß gar nicht escaped werden - unter gewissen Umständen darf die Zeichenfolge </ nicht auftreten (nämlich wenn das Script im (X)HTML-Dokument steht).
          ich erinnere mich dunkel, dass document.write("</script>") in NC 4x problematisch ist und besser etwa so zerlegt werden sollte:
          document.write("</sc" + "ript>")

          Nein, die Zeichenfolge </ ist das Problem. Aber auch nur, wenn das Script im HTML steht.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi,

            Nein, die Zeichenfolge </ ist das Problem. Aber auch nur, wenn das Script im HTML steht.

            hm, ich habe da andere Infos. NC 4x interpretiert ein dynamisch geschriebenes "</script>" als Scriptende, weshalb dieser String zerlegt werden sollte.

            Gruesse, Joachim

            --
            Am Ende wird alles gut.
            1. Hi,

              Nein, die Zeichenfolge </ ist das Problem. Aber auch nur, wenn das Script im HTML steht.
              hm, ich habe da andere Infos.

              http://www.w3.org/TR/html401/types.html#h-6.2

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              Schreinerei Waechter
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo,

    Nichts gegen Deine Bemühungen, aber den Netscape 4.6 benutzt nun wirklich praktisch niemand mehr. Für geschätzt einen von 1000 Benutzer so einen Aufwand zu betreiben ist wirklich Zeitverschwendung.

    Janni

    1. Hallo,

      Nichts gegen Deine Bemühungen, aber den Netscape 4.6 benutzt nun wirklich praktisch niemand mehr. Für geschätzt einen von 1000 Benutzer so einen Aufwand zu betreiben ist wirklich Zeitverschwendung.

      Janni

      Tja. Ich hab leider keine Wahl. Ist Vorgabe von meinem Arbeitgeber, dass ich das unterstützen muss.

      Mero

      1. Du Ärmster :-)

    2. Hallo Janni!

      Das ist einfach zu pauschal ausgedrückt. An einem Kundenprojekt meines Arbeitgebers greifen noch mehr als 10 % der Nutzer mit dem Netscape 4x auf das Intranet zu. Da hilft dann auch keine noch so schön hervorgeholte Statistik von irgendwelchen Webanbietern.

      Schönen Gruß

      Afra

  3. Hallo Merowinger!

    Bist Du Mainzer?

    Der head-Tag geht auf und geht wieder zu, aber alles dazwischen wird nicht wiedergegeben.

    Kann es etwa sein dass die Dokumenthierarchie die Du verwendest nicht stimmt? Da Du Deinen eigenen Angaben nach ja viel mit NN arbeitest müsstest Du das aber wissen. Für den Netscape 4x muss immer der komplette Elementbaum durchlaufen werden, man kann nicht immer direkt referenzieren. Denke zwar, dass das bei Deinem Frameset keine bedeutung hat, wäre aber eine Lösung. Woher willst Du genau wissen, dass der Head Tag im Dokument geöffnet wird? Kann es sein, dass Das Script hineingeschrieben wird, aber der Zugriff über parent.funktion() nicht richtig ist?

    Vielleicht kannst Du uns einen Testlink zur Seite verlinken? Was sagt di JavaScript Konsole des NN4x?

    Schönen Gruß

    Afra

    1. Hallo Merowinger!

      Bist Du Mainzer?

      Der head-Tag geht auf und geht wieder zu, aber alles dazwischen wird nicht wiedergegeben.

      Kann es etwa sein dass die Dokumenthierarchie die Du verwendest nicht stimmt? Da Du Deinen eigenen Angaben nach ja viel mit NN arbeitest müsstest Du das aber wissen. Für den Netscape 4x muss immer der komplette Elementbaum durchlaufen werden, man kann nicht immer direkt referenzieren. Denke zwar, dass das bei Deinem Frameset keine bedeutung hat, wäre aber eine Lösung. Woher willst Du genau wissen, dass der Head Tag im Dokument geöffnet wird? Kann es sein, dass Das Script hineingeschrieben wird, aber der Zugriff über parent.funktion() nicht richtig ist?

      Vielleicht kannst Du uns einen Testlink zur Seite verlinken? Was sagt di JavaScript Konsole des NN4x?

      Schönen Gruß

      Afra

      Hi Afra.

      Nein bin kein Mainzer.

      Was den Testlink betrifft muss ich leider passen. Das ist erst einmal nur offline hier im Intranet verfügbar.
      Ich kann dir aber ein komplettes Beispiel hier posten, das auch schon nicht funktioniert. Wenn man sich nach dem ausführen der Function show mal den Quelltext ansieht sieht man direkt, dass der komplette scriptteil fehlt. In IE und Mozilla funktioniert alles ohne Probleme, nur im Netscape verschwindet der zu schreibende Scripteintrag.

      <html>
      <head>
      <script>
      function show(){
      var m;
      m=this.document;
      m.open('text/html');
      m.write('<HTML><HEAD><script>function show2(){alert("Test");}</script>');
      m.write('</HEAD><BODY><a href=javascript:show2();>Show2</a>');
      m.write('</BODY></HTML>');
      m.close();
      }
      </script>
      </head>
      <body>
      <a href=javascript:show();>Show</a></body></html>

  4. Hallo,

    Ich muss per document.write eine Seite erstellen, in der ein Scriptbereich eingebunden ist. Netscape 4.6 ignoriert aber den kompletten Bereich zwischen den Script-Tags und gibt diesen Bereich nicht wieder.

    m.write('</script></head>');

    Das wurde ja schon geposted:
    m.write('</script></head>');

    Mir ist aber der Ablauf nicht ganz klar wann die neue Seite tatsächlich aufgebaut oder geladen wird, daran könnte es auch liegen.

    Gibt es eine Alternative zu document.write, mit der ich den Scriptteil in Netscape schreiben kann?

    Vielleicht klappt es wie hier beim letzten Beispiel:
    Import für Netscape 4

    Sonst könntest du wohl noch im body-Tag per onload einbinden.

    Grüsse

    Cyx23