Stefan Bion: Opera: Bilder in neu geöffneten Fenstern

Hi,

hat jemand eine Idee, warum man im Opera in neu geöffneten Fenstern keine Images laden kann?
In dem folgenden Codebeispiel wird die Überschrift <h3> noch angezeigt, das Bild jedoch nicht mehr.
Im MSIE und NN funktioniert's.

Gruß,
Stefan

<html>
<head>
  <title>Test</title>

<script language="JavaScript" type="text/javascript">
  <!--
    function fdw()
    {
      var w = open("", "bla", "width=300,height=200")

w.document.open('text/html')
      w.document.writeln('<html><head><title>Test</title></head><body onLoad="self.focus()">')
      w.document.writeln('<h3>Test</h3>')
      w.document.writeln('<img src="test.gif">')
      w.document.writeln('</body></html>')
      w.document.close()
    }
  //-->
  </script>
</head>

<body>
  <a href="javascript:fdw()">Test</a>
</body>
</html>

  1. Hi,

    das Bild jedoch nicht mehr.

    kannst Du den Quellcode der Ausgabe sehen? Was passiert, wenn Du vor und nach der Grafik ein '*' oder so ausgibst - einmal innerhalb des selben document.write(), einmal mit eigenen Codezeilen?

    var w = open("", "bla", "width=300,height=200")

    Du solltest unbedingt sagen, daß es sich um window.open() handelt, nicht um document.open(), this.open() oder sonstwas.

    Cheatah

    1. Hi Cheatah,

      kannst Du den Quellcode der Ausgabe sehen?

      Nein, klappt nicht.

      Was passiert, wenn Du vor und nach der Grafik ein '*' oder so ausgibst - einmal innerhalb des selben document.write(), einmal mit eigenen Codezeilen?

      Wird alles brav ausgegeben, auch das IMG-Tag wird ja interpretiert, aber nicht das Bild geladen, obwohl die Datei definitiv existiert. Ich hab' sogar mal den absoluten Pfad (file://localhost/D:/Tmp/test.gif) angegeben - hilft alles nix.

      var w = open("", "bla", "width=300,height=200")

      Du solltest unbedingt sagen, daß es sich um window.open() handelt, nicht um document.open(), this.open() oder sonstwas.

      Ok, macht aber auch keinen Unterschied.

      Gruß,
      Stefan

      1. Hallo zusammen,

        Wird alles brav ausgegeben, auch das IMG-Tag wird ja interpretiert, aber nicht das Bild geladen, obwohl die Datei definitiv existiert. Ich hab' sogar mal den absoluten Pfad (file://localhost/D:/Tmp/test.gif) angegeben - hilft alles nix.

        Nanu, nachdem ich die Bild-URL jetzt nochmal direkt über die Adreßzeile aufgerufen habe, klappts! Offensichtlich muß Opera in so einem Fall das Bild erst im Browser-Cache haben... :-(((

        Ich hab's nochmal verifiziert mit einem neuen Bild: Klappt zuerst nicht (leeres Image-Tag: [BILD]), dann Bild per Adreßzeile aufgerufen, zurück, klappt.

        Ich glaube, da müssen die Browser-Entwickler wohl nochmal ran...

        Gruß,
        Stefan

  2. hi.

    das problem hatte ich auch mal. allerdings hab ich - wie cheatah es bemängelte - WINDOW.open() (die großschreibung dient hier nur der verdeutlichung) geschrieben... ging trotzdem nicht. es wird an dem document.write() bzw document.writeln() liegen. irgendwie kommt opera damit nicht klar.

    cheatah: was soll dieses sternchen ("*") bewirken? nur zu testzwecken? den quelltext kann man sich übrigens nicht anschauen. habs versucht - keine chance. beim opera gibts diesen menupunkt gar nicht (bzw er ist inaktiv). außerdem trägt die seite den titel "about:blank", was drauf hinweist, dass wirklich _nichts_ in der seite steht - leider :o(

    wizz99[.de]

    1. Hi,

      ob ich window.open() oder nur open() schreibe, macht keinen Unterschied.

      Gruß,
      Stefan

      1. Hi,

        ob ich window.open() oder nur open() schreibe, macht keinen Unterschied.

        doch: das eine ist lesbarer als das andere. Außerdem gewöhnst Du Dir einen schlechten Stil an, der unter anderen Umständen durchaus einen Unterschied macht.

        Cheatah

    2. Hi,

      cheatah: was soll dieses sternchen ("*") bewirken?

      es soll deutlicher machen, wann das Script abbricht.

      Cheatah

  3. Hi Stefan,

    w.document.open('text/html')

    [schnipp]

    w.document.close()

    vielleicht liegt es an den fehlenden ";" nach den Statements.

    oder was passiert beim esoterischen Vorschlag:
    w.document.writeln("<img src='test.gif'>");

    Opera 5.11 kann auf jeden Fall per document.open(),write() und close() das aktuelle Fenster komplett neu schreiben.

    Grüße,
    Martin

    1. Hi Martin,

      vielleicht liegt es an den fehlenden ";" nach den Statements.

      Nein, das macht keinen Unterschied.

      oder was passiert beim esoterischen Vorschlag:
      w.document.writeln("<img src='test.gif'>");

      Pott wie Deckel...

      Opera 5.11 kann auf jeden Fall per document.open(),write() und close() das aktuelle Fenster komplett neu schreiben.

      Ja, normalen Text usw. stellt er auch dar, und auch das IMG-Tag wird interpretiert, aber das Bild wird nicht *geladen*. Unten mal ein "Screenshot (der Text *vor* und *hinter* dem IMG-Tag wird da ausgegeben).

      Gruß,
      Stefan

      1. Hi,

        vielleicht liegt es an den fehlenden ";" nach den Statements.

        Nein, das macht keinen Unterschied.

        doch: wieder eine Stilfrage ;-)

        Das Semikolon ist nicht _notwendig_, wenn der Befehl in der Zeile der letzte ist. Aber es ist schöner, und bei Codeänderungen deutlich unproblematischer.

        w.document.writeln("<img src='test.gif'>");

        Pott wie Deckel...

        In Anbetracht Deiner Grafik: Probiere es mal mit src="/kompletter/pfad/zu/test.gif".

        Cheatah

  4. Hi Stefan!

    Ich glaube mich schwach daran errinern zu können das gleiche Problem hier schon einmal im Forum gelesen zu haben. Ich glaube das lag damals daran das Opera...

    var w = open("", "bla", "width=300,height=200")
                  ^^

    an der markierten Stelle mindestens eine leere HTML-Seite haben wollte. Also open("leer.htm", "bla", ...)

    Aber sicher bin ich mir dabei nicht mehr. Kannst ja mal ausprobieren.

    Gruß,
    Sönke

    1. Hi Sönke und Antje,

      vielen Dank zunächst für den Tip mit der leeren Datei; es funktioniert - im Prinzip jedenfalls. Leider bewirkt die Dummy-Datei aber beim Netscape, daß dieser nach ein paar Reloads mit anderen Bildern aus unerfindlichen Gründen abschmiert (ohne die Dummy-Datei macht er das nicht). Auch wenn ich in diese Dummy-Datei ein HTML-Gerüst hineinschreibe, ändert das nichts an Netscapes Verhalten.

      Ein weiteres Problem beim Opera trat dann auch noch zutage: das Resizen des Fensters per <body onLoad="..."> funktioniert nicht. Wenn ich den resizeTo()-Aufruf statt in den BODY-Tag hinter das IMG-Tag schreibe, geht's zwar im Opera, aber nicht mehr im MSIE...

      Ich geb's auf (vorerst)! Diese ganze Frickelei! :-( Der eine Browser mag's so, der andere lieber so... nee, nee... ;-)

      Gruß,
      Stefan

  5. Hallo Stefan,

    hat jemand eine Idee, warum man im Opera in neu geöffneten Fenstern keine Images laden kann?
    In dem folgenden Codebeispiel wird die Überschrift <h3> noch angezeigt, das Bild jedoch nicht mehr.
    Im MSIE und NN funktioniert's.

    Ich habe mal alles in diesem Thread gesagte zusammengefaßt und bin dem Browser etwas auf die Schliche gekommen.

    Du benötigst eine leere Datei leer.html, selbst die Alternative about:blank kennt Opera nicht.

    Dann heißt es aufpassen. Opera referenziert die Bilder -wenn sie relativ referenziert sind- vom Verzeichnis aus, wo die Datei leer.html liegt.
    Also alles absolut referenzieren. Dann klappt es.

    Viele Grüße

    Antje