Katrin: Neues Fenster oeffnen + document.write()

Hallo,

ich will ueber Javascript bei Klick auf ein Bild ein Fenster mit der Grossansicht des Bildes und einem passenden Text oeffnen.
Die  Funktion largeWin (siehe unten) sollte eigentlich genau das machen..
Tut es aber nicht.
Das missglueckte Ergebnis sieht man auf http://www.inf.tu-dresden.de/~s9606421/bilder.html

Kann mir jemand sagen wo hier der Fehler liegt?
Danke fuer eure Hilfe..

Hier die Funktion:

<script type="text/javascript">
<!--

function largeWin(pic, text, orientation) {

if (orientation == 0){
myW = 800;
myH = 600;
} else {
myW = 600;
myH = 800;
}
myPrefs = "toolbar=no,location=no,scrollbar=yes,resizable=yes,width=" + myW + ",height=" + myH;

nWin = window.open('', "grossansicht", myPrefs);
nWin.focus();
nWin.document.location.href = "grossansicht.html";
nWin.document.write("<HTML><HEAD><TITLE>Gro&szlig;ansicht </TITLE><LINK REL='stylesheet' TYPE='text/css' HREF='content.css'></LINK></HEAD><Body><DIV class='ansicht' align='center'><BR><BR><table cellpadding='10px'><tr><td><A HREF='javascript:self.close()'><IMG SRC='"  + pic + "' alt='schliessen' BORDER=0></A></td></tr><tr><td><span class='desc'>" + text + "</span></td></tr></table></DIV></Body></HTML>");

}
//-->
</script>

  1. Hallo,

    Das missglueckte Ergebnis sieht man auf http://www.inf.tu-dresden.de/~s9606421/bilder.html

    Was ist denn nicht geglückt?

    nWin.document.location.href = "grossansicht.html";

    nö, du willst die Inhalte doch per "document.write" ins Dokument bringen.

    nWin.document.write("<HTML><HEAD><TITLE>Gro&szlig;ansicht </TITLE>
    <LINK REL='stylesheet' TYPE='text/css' HREF='content.css'></LINK>
    </HEAD><Body><DIV class='ansicht' align='center'><BR><BR>
    <table cellpadding='10px'><tr><td><A HREF='javascript:self.close()'>
    <IMG SRC='"  + pic + "' alt='schliessen' BORDER=0></A></td></tr>
    <tr><td><span class='desc'>" + text + "</span></td></tr></table>
    </DIV></Body></HTML>");

    vor dem "write" kann ein document.open('text/html'); nicht schade.
    Vor allem document.close(); zum Abschließen. Und, geht das alles nicht einfacher, ohne Tabellen, ohne Divs?

    Grüße,

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
    1. Hallo,

      Das missglueckte Ergebnis sieht man auf http://www.inf.tu-dresden.de/~s9606421/bilder.html

      Was ist denn nicht geglückt?

      Wie wird das ganze denn bei dir angezeigt? Also, bei mir im IE und Opera zeigt es mir nun im oberen Fensterbereich einen div mit einem "Schliessen"-Image und zwei Strings " + text + " und
      "); } //--> " an. Kurzum, er macht document.write() in der Ursprungsseite, was ja nicht sein soll.

      nWin.document.location.href = "grossansicht.html";

      nö, du willst die Inhalte doch per "document.write" ins Dokument bringen.

      Denn eigentlich soll das ganze bei Klick auf eines der Bilder ja ein neues Fenster oeffnen, und dann dort ueber document.write() den entsprechenden HTML-Inhalt schreiben. Und das ganze funktioniert auch, solange ich das "offline" oeffne, also nicht vom Server.

      Wie sieht das bei dir aus?

      Katrin.

      1. Hallo Katrin,

        Wie wird das ganze denn bei dir angezeigt?

        es öffnet sich ein leeres Fenster.
        Noch einmal zurück zu deinem ursprünglich geposteten Code. (Er unterscheidet sich mittlerweile von dem von dir aktuell verwendeten. Einen Teil meiner Anregungen hast du schon umgesetzt. Das Wesentliche dabei aber außer Acht gelassen.)

        nWin = window.open('', "grossansicht", myPrefs);

        Öffnet ein neues Fenster. Soweit ist das OK;

        nWin.document.location.href = "grossansicht.html";

        weist dem soeben geöffneten Dokument die Ressource "grossansicht.html" zu. Schlecht. Denn das führt dazu, dass das nachfolgende document.write ins Leere läuft. In einem Dokument kannst du nur solange schreiben wie der Parser des Browsers noch nicht am abschließenden </body> vorbeikam. Logisch?

        nWin.document.write("<HTML> .... usw.

        klappt nicht. Begründung siehe "document.location.href"

        Was nun noch fehlt ist ein abschließendes document.close().
        In Kurzform:

        nWin.document.open('text/html');
        nWin.document.write("<html>...</html>);
        nWin.document.close();

        Grüße,

        Jochen

        --
        Heute schon gescribbelt?
        Scribbleboard
        1. Hallo Jochen,

          Danke erstmal fuer deine Hilfe,

          Wie wird das ganze denn bei dir angezeigt?

          es öffnet sich ein leeres Fenster.

          Das ist das Problem. Bei dir öffnet sich ein leeres Fenster, bei mir funktioniert auf meinem Rechner wenn ich das ganze in Opera ansehe alles, im IE6 oeffnet sich kein neues Fenster, aber es wird nichts falsch angezeigt.
          Ein Freund hat mit Firefox keine Probleme, auch mit IE6 konnte ich die Seite schon korrekt anzeigen und auch das neue Fenster wie gewuenscht oeffnen.
          Das heisst, ich habe ein halbes Dutzend verschiedene Anzeigen..

          Ich werde deine Tipps mal probieren..
          Gibts es denn eine einfachere/andere Moeglichkeit ein neues Fenster zu oeffnen (mit dem entsprechenden Bild und Text)?

          Danke :)

          Katrin

          1. Hallo Katrin,

            Das ist das Problem. Bei dir öffnet sich ein leeres Fenster

            Das lag an dem Code zu diesem Zeitpunkt, es konnt nichts anderes passieren. Ich hätte ja gerne nochmal reingeguckt. Aber im Moment ist nix zu sehen.

            bei mir funktioniert auf meinem Rechner wenn ich das ganze in Opera ansehe alles, im IE6 oeffnet sich kein neues Fenster

            javascript ist eingeschaltet? kein Popupblocker?

            Gibts es denn eine einfachere/andere Moeglichkeit ein neues Fenster zu oeffnen (mit dem entsprechenden Bild und Text)?

            Nur dann, wenn du für jedes Popup eine eigene Seite mit Bild und Text verlinkst. Ein neues Fenster bekommst du dann über "target". Das ist zwar aufwändiger, du bist aber nicht von javascript abhängig.

            Grüße,

            Jochen

            --
            Heute schon gescribbelt?
            Scribbleboard
            1. Hallo Jochen,
              »» Das lag an dem Code zu diesem Zeitpunkt, es konnt nichts anderes passieren. Ich hätte ja gerne nochmal reingeguckt. Aber im Moment ist nix zu sehen.

              Hab das jetzt geaendert. Nun ist bei mir zwar die Anzeige im Ausgangsfenster ok, aber ein neues Fenster oeffnet sich trozdem nicht..

              »» »» bei mir funktioniert auf meinem Rechner wenn ich das ganze in Opera ansehe alles, im IE6 oeffnet sich kein neues Fenster
              »»
              »» javascript ist eingeschaltet? kein Popupblocker?

              Hab grad nochmal nachgesehen Beides Ja. Keine Ahnung woran das liegt.

              »» »» Gibts es denn eine einfachere/andere Moeglichkeit ein neues Fenster zu oeffnen (mit dem entsprechenden Bild und Text)?
              »»
              »» Nur dann, wenn du für jedes Popup eine eigene Seite mit Bild und Text verlinkst. Ein neues Fenster bekommst du dann über "target". Das ist zwar aufwändiger, du bist aber nicht von javascript abhängig.

              Ja, das hab ich mir schon gedacht dass das die einzige Alternative ist.. Aber man ist halt faul ;)

              Katrin.

              1. Hallo Katrin,

                Hab grad nochmal nachgesehen Beides Ja. Keine Ahnung woran das liegt.

                Was sagt die javascriptkonsole? Sag jetzt nicht, dass es da keine Fehler gibt:

                nWin = PrivoxyWindowOpen.open('', "grossansicht", myPrefs);

                Der Rest sollte so passen. Ach ja .... nette Bilder, gefällt mir.
                Viel Spaß.

                Grüße,

                Jochen

                --
                Heute schon gescribbelt?
                Scribbleboard