saru: <script></script> in <script></script>

Guckt Euch doch mal bitte diesen Code an:

<script language="Javascript"><!--
function pop(URL)
 {
  Img1 = new Image()
  Img1.src=URL;
var s1 = "<HTML>" +
"<HEAD>" +
"<TITLE>Detailansicht</TITLE>" +
"<script> +
"function shrinktofit () {" +
"document.domain = setDomain();" +
"var image = document.images.FullImage;" +
"window.resizeTo(image.width,image.height);" +
"if(document.body && document.body.clientWidth)" +
"window.resizeBy(" +
"image.width - document.body.clientWidth," +
"image.height - document.body.clientHeight" +
" )" +
"}" +
"</script>" +
"</HEAD>" +
"<body MARGINHEIGHT='0' MARGINWIDTH='0' topmargin='0' rightmargin='0' leftmargin='0' bgcolor='#FFCF00'>" +
"<img name='FullImage' border='0' onLoad='shrinktofit()' src='" +URL +
"'>"+
"</body>"+
"</HTML>"
  popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width=10, height=10")
  popup.document.write(s1)
  popup.document.close()
};
// -->

</script>

Dazu habe ich 2 Fragen.  Das Script funktioniert gut in InternetExplorer, aber In
Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:

"}" +
"</XMP><PRE><B><<FONT SIZE=+0 COLOR="#551A8B">/script</FONT>></B>" +
usw, usw.

Kann ich innerhalb eines <script></script>-Tags nicht noch ein </script> einfügen?
Ich habe es doch in Anführungszeichen gesetzt.  Daran wird es doch sicherlich
liegen oder? So kann das Script in Netscape natürlich nicht funktionieren.

Außerdem möchte ich das Popup-Fenster 10px in der Höhe größer machen.  Aber
wenn ich "window.resizeTo(image.width,image.height+10);" + eingeben passiert
gar nichts.

Für eine Antwort wäre ich überaus dankbar, denn ich bin am Ende

Gruss
saru

  1. Hallo Saru

    Dazu habe ich 2 Fragen.  Das Script funktioniert gut in InternetExplorer, aber In
    Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:

    siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
    das sollte helfen

    Viele Grüße

    Antje

    1. Hallo Saru

      Dazu habe ich 2 Fragen.  Das Script funktioniert gut in InternetExplorer, aber In
      Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:

      siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
      das sollte helfen

      Danke..jetzt habe ich das script zu: "</script>" +
      geändert, aber jetzt funktioniert gar nichts mehr.

      Noch irgendeine Idee???

      1. Hallo Saru

        siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
        das sollte helfen

        Danke..jetzt habe ich das script zu: "</script>" +
        geändert, aber jetzt funktioniert gar nichts mehr.

        Ja, eine URL auf der man sich das anschauen kann.

        Gruß

        Antje

        1. Ja, eine URL auf der man sich das anschauen kann.

          So...ich hatte ein " vergessen...jetzt funzt das Problem mit dem </scipt>, aber
          das ganze funktioniert in Netscape immer noch nicht.

          Hier die URL:

          http://www.willy-behrend.de/testpage_neuversuch.html

          Danke für Deine Hilfe

          Gruss saru

          1. Hallo Saru

            das ganze funktioniert in Netscape immer noch nicht.

            Hier die URL:

            http://www.willy-behrend.de/testpage_neuversuch.html

            Netscape 4 interpretiert aus irgendeinen Grund den Eventhandler onload nicht mehr, wenn ein <script></script> auftaucht.

            Ich habe deshalb einfach mal ein wenig umgeschrieben:

            function pop(URL)
             {
              Img1 = new Image()
              Img1.src=URL;

            var s1 = "<HTML>" +
            "<HEAD>" +
            "<TITLE>Detailansicht</TITLE>" +
            "</HEAD>" +
            '<body MARGINHEIGHT="0" MARGINWIDTH="0" topmargin="0" rightmargin="0" leftmargin="0" bgcolor="#FFCF00">' +
            "<img name='FullImage' border='0' onLoad='if (opener) opener.changeBild(this)' src='" +URL +
            "'>"+
            "</body>"+
            "</HTML>"
              popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")
              popup.document.write(s1)
              popup.document.close()
            };

            function changeBild(bild)
            {
            if (bild.width>0)
              popup.resizeTo(bild.width,bild.height)
              else  popup.resizeTo(200,200)

            }

            Wichtig sind auch die Änderungen in der Zeile

            popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")

            Im Extremfall kannst du für die Angabe width=10,height=10 eine Meldung Zugriff verweigert kriegen, da die Fenstergrößen mindestens 100 x 100 sein muß.

            resizable=yes damit NN 4 die Größenänderung auch ausführt und das entfernen der Leerzeichen im Parameterstring.

            Viele Grüße

            Antje

            PS: Die Angabe der URL erleichtert insbesondere deshalb die Arbeit, weil man mit <base href="URL"> sofort alle relevanten Dateien hat.

            1. Ich danke Dir vielmals.

              Du hast mir sehr geholfen.

              Noch etwas:

              Kann ich hier:

              function changeBild(bild)
              {
              if (bild.width>0)
                popup.resizeTo(bild.width,bild.height)
                else  popup.resizeTo(200,200)

              die höhe insofern änders, als das zum bild.height noch 20px angehängt werden?

              Gruss Saru

              und nochmals vielen Dank für die schnelle Hilfe

              1. Hallo Saru

                function changeBild(bild)
                 {
                 if (bild.width>0)
                   popup.resizeTo(bild.width+20,bild.height+20)
                   else  popup.resizeTo(200,200)
                }

                die höhe insofern änders, als das zum bild.height noch 20px angehängt werden?

                geht eigentlich problemlos.

                Alternativ kannst du auch:

                popup.resizeTo(parseInt(bild.width)+20,parseInt(bild.height)+20)

                versuchen.

                Gruß

                Antje

                1. Hallo Antje...

                  ...Du bist ein Schatz :-)
                  Jetzt werde ich auch nicht mehr nerven.

                  wow...jetzt bin ich erleichtert.

                  gruss

                  saru

                  1. ups...zu früh gefreut.

                    In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
                    denn dann läd die Ursprungsseite (also die in der das Script steht) in das
                    Fenster hinein.  Warum?

                    Hier nochmal der Code:

                    function pop(URL)
                     {
                      Img1 = new Image()
                      Img1.src=URL;

                    var s1 = "<HTML>" +
                    "<HEAD>" +
                    "<TITLE>Detailansicht</TITLE>" +
                    "</HEAD>" +
                    '<body MARGINHEIGHT="0" MARGINWIDTH="0" topmargin="0" rightmargin="0" leftmargin="0" bgcolor="#FFCF00">' +
                    "<img name='FullImage' border='0' onLoad='if (opener) opener.changeBild(this)' src='" +URL +
                    "'>"+
                    "</body>"+
                    "</HTML>"
                      popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")
                      popup.document.write(s1)
                      popup.document.close()
                    };

                    function changeBild(bild)
                    {
                    if (bild.width>0)
                      popup.resizeTo(parseInt(bild.width)+0,parseInt(bild.height)+100)
                      else  popup.resizeTo(200,200)

                    }

                    1. Hallo Saru

                      In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
                      denn dann läd die Ursprungsseite (also die in der das Script steht) in das
                      Fenster hinein.  Warum?

                      konnte ich eben auf http://www.willy-behrend.de/testpage_neuversuch.html

                      mit dem NN 4.5 nicht nachvollziehen. Welche Browserversion verwendest du denn?

                      Viele Grüße

                      Antje

                      1. Hallo Saru

                        In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
                        denn dann läd die Ursprungsseite (also die in der das Script steht) in das
                        Fenster hinein.  Warum?

                        konnte ich eben auf http://www.willy-behrend.de/testpage_neuversuch.html

                        mit dem NN 4.5 nicht nachvollziehen. Welche Browserversion verwendest du denn?

                        Viele Grüße

                        Antje

                        Netscape Communicator 4.7

                        Das Fenster öffnet sich in der richtigen Größe und bleibt für einige Sekunden
                        auch stehen.  Aber dann läd die Seite neu und die ursprungsseite ist zu
                        sehen.  Leider kann ich den Quellcode des Popupfensters nicht sehen, da
                        alles viel zu schnell geht, als das ich den Quellcode schnell öffnen könnte.

                        1. Hallo Saru

                          In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
                          denn dann läd die Ursprungsseite (also die in der das Script steht) in das
                          Fenster hinein.  Warum?

                          Also beobachten konnte ich nach dem Resize-Vorgang, dass das Fenster neu geladen wird. Sieht ganz nach einem Bug aus. Verwende mal statt resizeTo resizeBy, da sieht man es ganz deutlich.

                          JS-technisch wird es da kaum Abhilfe geben, außer du änderst den Ansatz.

                          Übergib die Bildgrößen als Parameter an die Funktion und öffne das Fenster gleich in der richtigen Größe. Natürlich hängt da eine ganze Menge noch dran aber da könnte dir dies weiterhelfen http://selfhtml.org/sfausles/tsfa_tcd.htm#a5

                          Viele Grüße

                          Antje

                          1. mein erstes Script war:

                            function pop(URL)
                             {
                              Img1 = new Image()
                              Img1.src=URL;
                              var s1 = "<TITLE>Detailansicht</TITLE>" +
                              "<BODY  topmargin='0' leftmargin='0'>" +
                              "<img src='" +URL +
                              "'>"
                              var s2 = "<FORM><INPUT TYPE='BUTTON' VALUE='Okay'" +
                              "onClick='self.close()'>"  +
                              "</BODY>"
                              popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
                              popup.document.write(s1+s2)
                              popup.document.close()
                            };

                            ABer auch hier gab es Probleme.  Wieder mal alles gut im IE, aber in
                            Netscape geht ein Popup in der Größe des Bildschirms auf.  Also wiedermal
                            falsch...ist da was flasch?

                            Wenn nicht, dann....
                            nun, dann muß ich es halt ohne die +100px in der Höhe machen, da hat es
                            ja funktioniert.  Leider gibt es dann auch kein "Fenster schließen" Knopf, der
                            eigendlich sein sollte.

                            NOchmals danke für Deine Hilfe.

                            1. Hallo,

                              ..  Img1 = new Image()
                              ..  Img1.src=URL;
                              ..  popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
                              .. Netscape geht ein Popup in der Größe des Bildschirms auf.  Also wiedermal

                              eine Möglichkeit wäre dass N4 nicht weiss wie gross Img1 ist wenn die Seite
                              noch nicht existiert.

                              Ich wüsste aber gerne was an der vorherigen Lösung das Problem war, mit
                              N4.77 scheint's richtig, das Popupfenster kommt in Bildgrösse und wird dann
                              höher, gelber(?) Rand unter Bild, und so steht es auch in den Scripten?

                              Hattest Du was anderes im Popup erhalten?

                              Grüsse

                              Cyx23

                              1. Ich wüsste aber gerne was an der vorherigen Lösung das Problem war, mit
                                N4.77 scheint's richtig, das Popupfenster kommt in Bildgrösse und wird dann
                                höher, gelber(?) Rand unter Bild, und so steht es auch in den Scripten?

                                Hattest Du was anderes im Popup erhalten?

                                Grüsse

                                Cyx23

                                ja, so sollte es auch sein, aber in Netscape Communicator 4.7 bleibt dieses
                                Fenster nur wenige Sekunden stehen und läd dann neu und zwar eine andere SEite
                                nämlich die, auf der das Popupscript steht.  Die Fenstergröße bleibt so
                                bestehen, nur eben der Content nicht.  In Netscape 6 (aber da gibt es ja
                                nur bugs), zeigt er das fenster einmal richtig an, aber wenn man es schließt und
                                nochmals öffnet, zeigt er das popup nur in etwa 200x200 px.

                                gruss sacha

                                ich weiß auch nicht mehr weiter.

                                1. Hallo,

                                  ja, so sollte es auch sein, aber in Netscape Communicator 4.7 bleibt dieses
                                  Fenster nur wenige Sekunden stehen und läd dann neu und zwar eine andere SEite
                                  nämlich die, auf der das Popupscript steht.  Die Fenstergröße bleibt so

                                  bei mir mit 4.77 scheint alles ok, vielleicht kannst du mal durchchecken
                                  wo's hängt, z.B. onLoad='alert(opener)' o.ä., usw.

                                  bestehen, nur eben der Content nicht.  In Netscape 6 (aber da gibt es ja
                                  nur bugs), zeigt er das fenster einmal richtig an, aber wenn man es schließt und
                                  nochmals öffnet, zeigt er das popup nur in etwa 200x200 px.

                                  wenn Du es sowieso besser umstrickst wegen n4 und gleich mit der richtigen
                                  Grösse aufmachst hast Du das Problem N6 auch nicht.
                                  Wenn Du die Bildgrösse abfragen wolltest musst Du erst ein Fenster
                                  mit dem Bild aufmachen, dann die Bildgrösse abfragen, dann Variable
                                  mit Bildgrösse, dann Fenster(ggf. erst zu) ganz neu mit Variable + 100px
                                  bei Höhe) aufmachen.
                                  Die Alternative wären wohl Variablen/Array mit Fenstergrössen.

                                  ich weiß auch nicht mehr weiter.

                                  sowas kann halt etwas dauern bis es klappt.

                                  Grüsse

                                  Cyx23

                                  1. sowas kann halt etwas dauern bis es klappt.

                                    Das ganze liegt nur an einer Zeite (wie so häufig).

                                    So klappts:

                                    popup.resizeTo(bild.width,bild.height)

                                    So nicht:

                                    popup.resizeTo(parseInt(bild.width)+0,parseInt(bild.height)+100)

                                    Die 100 Pixel sind allerdings wichtig, damit ich in das Script noch einen
                                    button integrieren kann, der das Pop schließt.

                                    Gruss Saru

                                    1. Das ganze liegt nur an einer Zeite (wie so häufig)

                                      Nein, doppeltes Posten ist nicht so häufig!!

                                      1. Also wer Probleme hat, in einem Script mit <script></script> zu hantieren, sollte einfach in den body schreiben
                                        <input type="hidden" name="script" value="<script>Inhalt</script>">

                                        Beachten, dass doppelte Anführungszeichen nicht mehr möglich sind!

                                        z.B. onClick='dudies, dujenes('')'
                                        würde dann aus selbigen Problem nicht mehr funktionieren!

                                        P.S. Vielleicht sollte man Microsoft, Netscape & Co mal sagen, der Browser sollte den HTML - Quelltext nicht interpretieren, sondern sich logisch durchlesen! *g*

                                        By
                                        AB