tafkah: Fehler bei IE 5.5 beim Laden eines Bildes...

Moin,

ich verlinke ein Bild mit einem Script, das ein neues Fenster oeffnet und in
diesem ein Bild anzeigen soll.

Das zu ladende Bild wird mit uebergeben. Bei mir klappt lokal alles (IE 5.5 und NN
4.75) nur bei T-Online klappt's nicht... Da wird immer nur das erste Bild
angezeigt und IE meldet einen Fehler:

'album.document.images.0' ist Null oder kein Objekt

(NN klappt)...

function win(bild,breite,hoehe)
 {
 xpos=(screen.width-breite)/2;
 ypos=(screen.height-hoehe)/2;

album=window.open("album.htm","album","width="+breite+",height="+hoehe+"scre
enX= xpos,screenY=ypos");
 album.moveTo(xpos,ypos);
 album.document.images[0].src=bild;
 }

Wie bekomme ich das hin?

Danke

Holger

  1. Hi,

    'album.document.images.0' ist Null oder kein Objekt

    alert(album)
    alert(album.document)
    alert(album.document.images)
    alert(album.document.images.0)

    xpos=(screen.width-breite)/2;

    Das screen-Objekt ist extrem nutzfrei. Du erfährst hier alles mögliche, aber nicht wie breit der Bildschirmbereich ist. Verzichte darauf, Dich mit Falschinformationen zu versorgen.

    album=window.open("album.htm","album","width="+breite+",height="+hoehe+"scre
    enX= xpos,screenY=ypos");
    album.document.images[0].src=bild;

    Und Du meinst wirklich, eine Millisekunde nach Öffnen des Fensters ist bereits das Dokument da?

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,

      'album.document.images.0' ist Null oder kein Objekt

      alert(album)
      alert(album.document)
      alert(album.document.images)
      alert(album.document.images.0)

      ???

      album.document.images[0].src=bild;

      Und Du meinst wirklich, eine Millisekunde nach Öffnen des Fensters ist bereits das Dokument da?

      Hm, warum funktioniert das aber lokal? Kann ich denn irgendwie abfragen, ob das Dokument schon da ist und es dann ändern?

      Gruß

      Holger

      1. Hi,

        'album.document.images.0' ist Null oder kein Objekt
        alert(album)
        alert(album.document)
        alert(album.document.images)
        alert(album.document.images.0)
        ???

        das ist das erste, was Du bei dieser Fehlermeldung machst. Nennt sich Problemanalyse.

        Und Du meinst wirklich, eine Millisekunde nach Öffnen des Fensters ist bereits das Dokument da?
        Hm, warum funktioniert das aber lokal?

        Deine Festplatte ist ein _bisschen_ schneller als ein HTTP-Roundtrip.

        Kann ich denn irgendwie abfragen, ob das Dokument schon da ist und es dann ändern?

        Das Dokument kann Dir melden, wenn es bereit ist. So herum ist es deutlich sinnvoller, als "auf gut Glück" zu warten.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi,

          Das Dokument kann Dir melden, wenn es bereit ist.

          Du machst es einem aber nicht einfach... ;-)
          Sei doch so nett und teile mir mal mit, wie man das hinbekommt. Oder ist das SO aufwändig?

          Gruß

          Holger

          1. Hi,

            Das Dokument kann Dir melden, wenn es bereit ist.

            Du machst es einem aber nicht einfach... ;-)
            Sei doch so nett und teile mir mal mit, wie man das hinbekommt. Oder ist das SO aufwändig?

            In meinem funktionierendem Skript ist diese Technik drin. Zusätzlich versucht mein Skript rauszufinden, wie gross der Anzeigebreich ist. Leider sind diese Zahlen nicht zuverlässig genug, als das es wirklich in allen Browsern ohne Rand funktioniert.

            Struppi.

            1. Hi,

              In meinem funktionierendem Skript ist diese Technik drin.

              ...hat denn hier niemand Erbarmen mit einem Nicht-Profi?

              Also ich hab mir Deine Scripte natürlich angeschaut. Aber ehrlich gesagt, hab ich nirgends ne Schleife gefunden, die abfragt, ob ein Objekt vorhanden ist...

              Bitte gib mir nen Tip!

              Gruß

              Holger

              1. Hi,

                In meinem funktionierendem Skript ist diese Technik drin.

                ...hat denn hier niemand Erbarmen mit einem Nicht-Profi?

                Ich hab dafür mehrere Versuche über einen langen Zeitraum gebraucht. Es ist nicht einfach!

                Also ich hab mir Deine Scripte natürlich angeschaut. Aber ehrlich gesagt, hab ich nirgends ne Schleife gefunden, die abfragt, ob ein Objekt vorhanden ist...

                Bitte gib mir nen Tip!

                Es gibt keine Schleife. Der Trick ist in den folgenden 2 Funktionen versteckt.

                ///////////////////////////////////////////////////////////
                // fitWin(Image, window) - wird aus dem Popup aufgerufen.
                function fitWin(i, w)
                {
                    w.resizeTo(i.width, i.height);
                    var width = w.innerWidth ? w.innerWidth : w.document.body.offsetWidth;
                    var height = w.innerHeight ? w.innerHeight : w.document.body.offsetHeight;
                    w.resizeBy(i.width - width + rahmen_w, i.height - height + rahmen_h);
                    w.focus();
                }
                /////////////////////////////////////////////////////////////////////
                // getHTML(bild, titel, farbe)
                function getHTML(src, title, bgcolor)
                {
                    var body = (window.opera || document.layers) ? false : true;

                if(!title) title = 'kein Titel';
                    if(!bgcolor) bgcolor = '#fff';

                return '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">\n' +
                    '<HTML>\n<HEAD>\n' +
                    '<TITLE>' + title + '</TITLE>\n' +
                    '<STYLE type="text/css">\n' +
                    'body{\nposition:absolute;top:0;left:0;margin:0;padding:0;'+
                    'text-align:center;background-color:' + bgcolor + ';\n}\n'+
                    '</STYLE>\n' + '</HEAD>\n' +
                    '<body ' + (body ? 'onload="opener.fitWin(document.images[0], window);"' : '') +
                    '>\n' +
                    '<img src="' + src +
                    '" alt="' + title +
                    '" border=0 ' + (!body ? 'onload="opener.fitWin(this, window);"' : '' ) + '>' +
                    '\n</body>\n</html>\n';
                }

                Struppi.

          2. Hi,

            Du machst es einem aber nicht einfach... ;-)

            nein, ganz bestimmt nicht :-)

            Sei doch so nett und teile mir mal mit, wie man das hinbekommt.

            Mein Ziel ist, Dir dabei zu helfen, dass Du Dir selbst hilfst. Dazu ist es bei Problemen wichtig zu wissen, wo diese bei Dir liegen. Also: Was hast Du probiert, und woran ist es gescheitert?

            Oder ist das SO aufwändig?

            Programmierung ist nicht trivial. Zuerst solltest Du Dir über den Mechanismus im Klaren sein, den Du anwenden musst; hierzu habe ich Dir notwendige Informationen geliefert. Nachdem Dein Konzept steht, kannst Du über die Implementierung nachdenken.

            Struppis Lösung kommt diesem Konzept schon recht nahe. Wenn Du schlau bist, versuchst Du allerdings selbst, zu einem solchen Ziel zu kommen - nur so lernst Du die Probleme kennen, die Struppi bereits beiseite geräumt hat. Ich empfehle, seine Antwort vorerst _nicht_ zu lesen, sondern höchstens später Deine Ergebnisse mit seinen zu vergleichen.

            An Struppi: Auch wenn Du es sicher nett meintest; fertige Lösungen zu posten hat in aller Regel mehr Nach- als Vorteile.

            Cheatah

            --
            X-Will-Answer-Email: No
            1. An Struppi: Auch wenn Du es sicher nett meintest; fertige Lösungen zu posten hat in aller Regel mehr Nach- als Vorteile.

              Woher weist du das ich's nett meine, ich glaub ich kann fast so unnett sein wie du ;-)

              aber diese frage mit dem Bilder popup kommt ungefähr dreimal am Tag. Wenn du ihnen sagst benutzt den onload event, kommen sie zwar von alleine ein Stückchen weiter, werden aber an der Fenstergröße scheitern, oder in einzelnen Browsern klappt's nicht (einige Opera Versionen haben Probleme mit dem Image().onload event).

              Daneben, vergessen alle, das es eben Leute gibt die ohne JS surfen und bauen Lösungen die dann nicht mehr funktionieren. Aufgrund dieser ganzen Komplexität, die ich in diesem konkreten Beispiel am eigenen Leib erfuhr und lange an der Lösung getüftelt habe, denke ich mir, das ein Anfänger nicht von alleine draufkommt wie es am sinnvollsten sein könnte.

              Zumal viele ja auch einfach eine fertige Lösung wollen. Ok, in diesem konkreten Falle nicht, aber wie gesagt, für einen Anfänger kann so ein Skript evtl. eine zu hohe Hürde sein.

              Oder raube ich dir deinen Spaß am diskutieren? ;-)

              Struppi.

              1. Hi,

                An Struppi: Auch wenn Du es sicher nett meintest; fertige Lösungen zu posten hat in aller Regel mehr Nach- als Vorteile.
                Woher weist du das ich's nett meine,

                naja, ich wollte Dir nichts Gegenteiliges unterstellen ;-)

                ich glaub ich kann fast so unnett sein wie du ;-)

                Aber nur fast *g*

                aber diese frage mit dem Bilder popup kommt ungefähr dreimal am Tag. Wenn du ihnen sagst benutzt den onload event, kommen sie zwar von alleine ein Stückchen weiter, werden aber an der Fenstergröße scheitern, oder in einzelnen Browsern klappt's nicht (einige Opera Versionen haben Probleme mit dem Image().onload event).

                Ja, und? Aus Fehlern wird man klug. Ob aus den eigenen oder aus denen anderer sei dahingestellt; aber in Deiner Lösung ist von Fehler keine Spur mehr. Es ist eine optimierte Version; etwas, das sämtliche auftretenden Probleme bereits beachtet. Woher soll ein Leser wissen, welche Probleme das sind?

                Daneben, vergessen alle, das es eben Leute gibt die ohne JS surfen und bauen Lösungen die dann nicht mehr funktionieren. Aufgrund dieser ganzen Komplexität, die ich in diesem konkreten Beispiel am eigenen Leib erfuhr und lange an der Lösung getüftelt habe, denke ich mir, das ein Anfänger nicht von alleine draufkommt wie es am sinnvollsten sein könnte.

                Wir alle hier tragen leidenschaftlich gerne dazu bei, dass der Anfänger von selbst darauf kommt. Man muss ihm nicht die letzte Möglichkeit dazu nehmen, indem man ihm Copy&Paste-taugliches Material präsentiert und somit verhindert, dass er mit entsprechenden Problemen überhaupt konfrontiert wird.

                Zumal viele ja auch einfach eine fertige Lösung wollen.

                Nein, wollen sie nicht. Sie _glauben_ vielleicht, dass sie es wollen. Und auf wen das wirklich zutrifft, der ist hier falsch - ganz einfach.

                Ok, in diesem konkreten Falle nicht, aber wie gesagt, für einen Anfänger kann so ein Skript evtl. eine zu hohe Hürde sein.

                Ja, genau, und genau darum geht es! :-)

                Oder raube ich dir deinen Spaß am diskutieren? ;-)

                Nein, Du lieferst mir schließlich dadurch ein anderes Diskussionsthema *g*

                Cheatah

                --
                X-Will-Answer-Email: No
                1. Zumal viele ja auch einfach eine fertige Lösung wollen.

                  Nein, wollen sie nicht. Sie _glauben_ vielleicht, dass sie es wollen. Und auf wen das wirklich zutrifft, der ist hier falsch - ganz einfach.

                  Ok, du hast recht, eine einfach Suche bei google würde denen auch die Lösung bieten. http://www.google.de/search?hl=de&ie=ISO-8859-1&q=foto+popup+javascript&meta=lr%3Dlang_de

                  Ok, in diesem konkreten Falle nicht, aber wie gesagt, für einen Anfänger kann so ein Skript evtl. eine zu hohe Hürde sein.

                  Ja, genau, und genau darum geht es! :-)

                  hehe, ich sehe.

                  Oder raube ich dir deinen Spaß am diskutieren? ;-)

                  Nein, Du lieferst mir schließlich dadurch ein anderes Diskussionsthema *g*

                  nö, ich weiss ja wann ich aufhören sollte. spätestens wenn ich unrecht habe ;-)

                  struppi.

  2. Moin,

    ich verlinke ein Bild mit einem Script, das ein neues Fenster oeffnet und in
    diesem ein Bild anzeigen soll.

    Das zu ladende Bild wird mit uebergeben. Bei mir klappt lokal alles (IE 5.5 und NN
    4.75) nur bei T-Online klappt's nicht... Da wird immer nur das erste Bild
    angezeigt und IE meldet einen Fehler:

    'album.document.images.0' ist Null oder kein Objekt

    Du suchst ein Skript das funktioniert (sogar ohne JS) http://home.arcor.de/struebig/js/popup/popup_3.htm

    Struppi.

    1. Hi,

      klaro hab ich das so ähnlich auch schon versucht. Aber wie Du selbst schon sagtest: der Rand stört...

      Deshalb habe ich den Umweg über ein HTML-Dokument gewählt, in dem ich den Rand wegbekomme.

      Gruß

      Holger

      1. Hi,

        klaro hab ich das so ähnlich auch schon versucht. Aber wie Du selbst schon sagtest: der Rand stört...

        Deshalb habe ich den Umweg über ein HTML-Dokument gewählt, in dem ich den Rand wegbekomme.

        Nein, tust du nicht.
        Du kriegst den Rand weg in dem einen Browser, dann hast du z.b. im MZ Scrollbars.
        Ich hab alles mögliche probiert und habe keine allgeimeine Lösung gefunden.

        Struppi.