Ergebnis 1 bis 11 von 11
  1. #1
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    hallo leute,
    ich habe ein script für meine Seite geschrieben. Dort soll in einem Ausgabefenster (mit window.open()) ein Bild ausgegeben werden. Mein Problem: machmal schafft der Clientbrowser anscheinend das laden und machmal nicht. Wie kann ich garantieren, das der Browser immer wartet, bis er das Bild vollständig geladen hat?
    der code:

    index.html:

    var BildFenster;
    function BildZeigen(adresse)
    {
    if(BildFenster.closed == true)
    {
    BildFenster = window.open("navi_galery.html","ausgabe",'width=' + 10 + ',height=' + 10 + ',left=0, top=0, alwaysRaised=yes, resizable=1,scrollbars=no,menubar=no,status=no,toolbar=no,location=no,dependent=yes' );
    }
    BildFenster.Resize(adresse);
    }
    function Home()
    {
    var width = screen.availWidth;
    var height = screen.availHeight;
    self.resizeTo(width, height);
    self.moveTo(0, 0);
    BildFenster = window.open("navi_galery.html","ausgabe",'width=' + 10 + ',height=' + 10 + ',left=0, top=0, alwaysRaised=yes, resizable=1,scrollbars=no,menubar=no,status=no,toolbar=no,location=no,dependent=yes' );
    BildZeigen('grafik/flyer/party_101205_1.gif');
    }

    Erklärung:
    beim Laden der index.html wird Home() geladen (onLoad()) -> resize und ausrichten des browserfensters; zusätzlich ausgeben eines Bildes im Fenster 'BildFenster'.

    navi_galery.html:

    var bild = new Image();
    var hintergrund = 0;
    function Resize(adresse)
    {
    bild.src = adresse;
    bild.onLoad = BildLaden(adresse);
    }
    function BildLaden(adresse)
    {
    var x = bild.width;
    var y = bild.height;
    self.resizeTo(x, y);
    self.moveTo(0, 0);
    hintergrund = self.document.getElementById('meinBody');
    hintergrund.background=adresse;
    self.focus();
    }

    Erklärung:
    ich dachte egentlich, daß er durch bild.onLoad warten muß, bis er das Bildgeladen hat.

    Allerdings paßt er das Ausgabebrowserfenster machmal dem Bild an und machmal nicht; d.h. manchmal ist er fertig mit laden und machmal noch nicht (dann hat das Fenster die dummy-größe(10,10)); d.h. auch machmal Bild ausgegeben und machmal nicht.

    Hoffe sehr, daß mir jemand helfen kann. Wäre überglücklich.

    Gruss Christian

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Hier steckt dein Fehler: bild.onLoad = BildLaden(adresse);
    Damit rufst du die Funktion auf und sagst dem Browser, dass er wenn er das Bild fertig geladen hat, die Funktion, die du als Rückgabewert der Funktion zurückgibst aufruft. Du gibst aber keine Zurück, daher:


    bild.onLoad = BildLaden;

    Dem Adresse in deiner Funktion entspricht this.src

  3. #3
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Hi schlauer,

    danke erstmal für deine Antwort.
    Allerdings funzt es jetzt immer noch nicht.
    das Event onLoad() wartet doch, bis das Bild geladen ist, oder?
    Müßte es denn nicht sogar:
    bild.onLoad(BildLaden);
    heißen?
    Aber das funzt auch nicht. Der Browser paßt das Fenster nicht der Bildgröße an, allerdings erscheint das Fenster in 0, 0. D.h. er führt
    self.moveTo(0, 0);
    aus.
    D.h. widerrum das das Bild anscheinend bei der Ausführung noch nicht fertig geladen wurde.
    Wie kann ich javascript dazu veranlassen, daß gewartet wird, bis das Bild fertig geladen ist, damit er das neue Fenster den Bildgrößen anpassen kann?

    Danke im vorraus!
    Christian

  4. #4
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Nein onload ist lediglich ein Attribut in das geschaut wird, wenn der load Event eintritt. Wenn dort eine Funktionsreferenz steht wird diese Funktion aufgerufen.

    Du musst nur das machen was ich geschrieben habe.

  5. #5
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Hi schlauer,

    ich hab's ja so gemacht, wie du gesagt hast:

    var bild = new Image();
    var hintergrund = 0;

    function foc()
    {
    self.focus();
    }
    function Resize(adresse)
    {
    bild.src = adresse;
    bild.onLoad = BildLaden;
    }
    function BildLaden()
    {
    var x = bild.width;
    var y = bild.height;
    self.resizeTo(x, y);
    self.moveTo(0, 0);
    hintergrund = self.document.getElementById('meinBody');
    hintergrund.background = this.src;
    self.foc();
    }

    ... auf meinem Rechner funzt es, aber online macht er nicht das resizeTo(x,y);
    Und zwar wahrscheinlich deshalb, weil er das Bild noch nicht geladen hat?

    Gruss Christian

  6. #6
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    p.s.:
    mit der variante: bild.onLoad = BildLaden; macht er nicht einmal mehr das resizeTo(x,y);
    D.h.: die Adresse muß wohl doch übergeben werden.

    Bitte helft mir.

    Gruss Christian

  7. #7
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Da war ein Fehler drin, den ich von dir übernommen hatte (pase & copy) Außerdem brauchst du das Bild nicht zu übergeben, da in der onload Funktion this = dem Bild ist.

    PHP-Code:
    function Resize(adresse)
    {
    bild.src adresse;
    bild.onload BildLaden;
    }
    function 
    BildLaden()
    {
    var 
    this.width;
    var 
    this.height;
    window.resizeTo(xy);
    window.moveTo(00);
    hintergrund window.document.getElementById('meinBody');
    hintergrund.style.backgroundImage 'url(' this.src ')';


  8. #8
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    hi schlauer,
    schön, daß du mir hilfst.
    nun sieht das ganze so aus:

    <script language="javascript" type="text/javascript">
    var bild = new Image();
    var hintergrund = 0;
    var x = 0;
    var y = 0;
    function foc()
    {
    self.focus();
    }
    function Resize(adresse)
    {
    bild.src = adresse;
    bild.onLoad = BildLaden;
    }
    function BildLaden()
    {
    x = this.width;
    y = this.height;
    window.resizeTo(x, y);
    window.moveTo(0, 0);
    hintergrund = window.document.getElementById('meinBody');
    hintergrund.style.backgroundImage = 'url(' + this.src + ')';
    }
    </script>
    <style type="text/css">
    <!--
    .hintergrund {
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-position: middle;
    }
    -->
    </style>
    </head>
    <body style="background-image:url(grafik/background_dummy.gif)" class="hintergrund" id="meinBody">
    </body>
    </html>

    aber es geht immer noch nicht.
    resizeTo(x, y); wird nicht durchgeführt. Bild wird ebenfalls nicht gezeigt.
    Zumindest resizeTo() ging, wenn bei meiner version. Woran könnte das liegen?

    Gruss Christian

  9. #9
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Der Unterschied ist:
    bild.onLoad = BildLaden;
    PHP-Code:
    bild.onload BildLaden

  10. #10
    chrishawaii ist offline Jungspund
    registriert
    30-11-2005
    Beiträge
    17

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Hi schlauer,

    erstmal danke, daß du mir geantwortet hast.
    mit:
    bild.onload = BildLaden;
    is es genauso: beim ersten Mal Laden der Seite hat er es gemacht, beim zweiten Mal nicht mehr.
    Ich bin am verzweifeln.
    Ich geb dir mal den Link zu der page, dann kannst du das selber mal sehen:

    http://hermes.et.hs-wismar.de/~mm02021/

    Es wäre schön, wenn ich es hinkriegen würde.
    Ich bin auch für Alternativen, das Fenster betreffend offen.

    Gruss Christian

  11. #11
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Wie kann ich den Browser warten lasse, bis er das Bild vollständig geladen hat?

    Oh Mann, mach das nie wieder :-(
    Seiten die die Browserfenstergröße ändern sind die Pest. Ich hab einen grossen Monitor und möchte es nicht auf die volle Größe haben!

    Ich erhalte eine Fehlermeldung:
    Fehler: BildFenster has no properties
    Quelldatei: http://hermes.et.hs-wismar.de/~mm02021/galery.html
    Zeile: 18

    Ich schau mir das jetzt nicht weiter an, weil mir deine Seite ständig die Browsergröße ändert.

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 16-02-2007, 01:12
  2. Fotoalbum
    Von jona999 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 01-12-2005, 13:36
  3. Bild soll vor maus Fliehen.
    Von Smily0412 im Forum JavaScript
    Antworten: 18
    Letzter Beitrag: 01-02-2005, 22:31
  4. Fotoalbum
    Von kellerwirt im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 24-12-2004, 20:31
  5. sprung innerhalb von frames
    Von kellerwirt im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 20-11-2004, 21:29

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •