peter seliger: "complete"-Eigenschaft - Fehler in Netscape 4 ?

Beitrag lesen

hallo Tom,

auf die unzuverlaessigkeit der complete-methode bin
ich auch schon gestossen - aber die braucht man auch
gar nicht, denn mit scripten generierte abfragen nach
[complete] waeren zu umstaendlich ... Du musst pausenlos abfragen !!!

vorschlag: lass Dir doch die vollstaendigkeitsbescheinigung
  einfach von Deinem bild schicken ...
  merke: immer andere fuer sich arbeiten lassen - so wie ich gerade fuer Dich / Euch !!!

idee:  jedes <image>-objekt kennt den onload-event -

irgendwo zwischen </TITLE> und </HEAD> kannst
  Du also variablen und funktionen plazieren,
  die den status deines bildes nur halten - aber
  nicht ueberwachen ... das <imgage>-object
  kuemmert sich bei <img src="..." onload="...">
  selbst um das schreiben des wertes, den Du
  abfragen moechtest.

loesungEN: koennten so aussehen ...

a) bild meldet selber, dass es geladen ist, wie es heisst und welche groesse es hat  

-  ACHTUNG - praktisch nicht sinnvoll - dient nur zur veranschaulichung !!!!!  

<!doctype html public "-//W3C//DTD HTML 3.2//EN">
  <HTML>

<HEAD>
  <TITLE> ... dein_title ... </TITLE>
  <script language="JavaScript">
  <!--
  function LADEZUSTAND_BILD_ZEIGEN(mein_name,meine_groesse_inKB)
   {
   alert("\n\n   ein bild wurde geladen !!!   \n\n   name : "+mein_name+"   \n   groesse : "+meine_groesse_inKB+" kByte   \n\n")
   }
  //-->
  </script>
  </HEAD>

<BODY>
  was
  Du
  willst
  <img src="... deine_quelle.xxx ..." width="xx" height="xx" border="0" alt="... dein_alternativer_text ..." onload="self.LADEZUSTAND_BILD_ZEIGEN('bin ein bild',XX)">
  was
  Du
  willst
  </BODY>
  </HTML>

- interessant ist die tatsache, das Du bilder auf diese weise in einem versteckten 0-[frame]  

im <BODY></BODY> einer normalen HTML-seite vorladen und den fortschritt des bilderladens
   ueberwachen kannst
- die function LADEZUSTAND_BILDER_ZEIGEN(...) sollte dann ebenfalls in einer in einem 0-[frame]
   versteckten HTML-seite zusammen mit deinen gesamten anderen scripten stehen
- wenn diese SCRIPT-seite geladen ist, ruft sie Deine IMAGE-seite auf
- nun werden <img... onload="LADEZUSTAND_BILDER_ZEIGEN(...)"> ereignisse zuhauf generiert
- Du kannst jetzt die function LADEZUSTAND_BILDER_ZEIGEN(...) so modifizieren, dass diese
   die bandbreite der netzanbindung eines clients ausrechnet und entsprechend darauf reagiert
- in b) kann ich ja mal einen grossen einblick gewaehren

b) bild meldet, dass es geladen wurde und welche groesse es hat  

- ACHTUNG - nur sinnvoll, wenn man den client wirklich  

ueber den ladezustand der bilder informieren moechte !!!

//  
//diese datei heisst "scripte.htm" und kommt in einen 0 breiten [frame] namens SCRIPTE !!!  
//wenn diese seite geladen wurde, plaziert sie die seite "bilder.htm" in einem 0 breiten [frame] namens BILDER !!!  
//  

<!doctype html public "-//W3C//DTD HTML 3.2//EN">
  <HTML>

<HEAD>
  <TITLE> alle meine SCRIPTE </TITLE>
  <script language="JavaScript">
  <!--
  var alle_bilder = XX;   // hier bitte die  gesamtbildanzahl  des  projektes eintragen !!
  var n_geladene_bilder = 0;
  var startzeit_bilder = 0;
  var startzeit_letztes = 0;
  var bildgroesse_verstrichen = 0;
  var bildgroesse_gesamt_KB = XXX.XX // hier den  gesamtspeicherbedarf  aller bilder in KB angeben !!
  var letzte_bildgroesse = 0;

function LADEZUSTAND_BILDER_ZEIGEN(dieses_groesseKB)
   {
   n_geladene_bilder = n_geladene_bilder + 1;

if (n_geladene_bilder == 1) {startzeit_bilder = new Date();startzeit_bilder = startzeit_bilder.getTime()-1;startzeit_letztes = startzeit_bilder;bildgroesse_verstrichen = bildgroesse_verstrichen - dieses_groesseKB;}
   bildgroesse_verstrichen = ((Math.floor(((bildgroesse_verstrichen + dieses_groesseKB)*100)+0.5))/100);
   var startzeit_dieses = new Date();startzeit_dieses = startzeit_dieses.getTime();
   var zeit_verstrichen = (startzeit_dieses - startzeit_bilder)/1000;
   var letztes_verstrichen = (startzeit_dieses - startzeit_letztes)/1000;
   var verstrichen_caKBproSEC = ((Math.floor(((bildgroesse_verstrichen/zeit_verstrichen)*100)+0.5))/100);
   var letztes_exaktKBproSEC = ((Math.floor(((letzte_bildgroesse/letztes_verstrichen)*100)+0.5))/100);
   var verbleibende_zeit_ca = ((Math.floor((((bildgroesse_gesamt_KB - bildgroesse_verstrichen)/verstrichen_caKBproSEC)*10)+0.5))/10);
   startzeit_letztes = startzeit_dieses;
   letzte_bildgroesse = dieses_groesseKB;

//alert("\n\nstartzeit_bilder = "+startzeit_bilder+"\nstartzeit_dieses = "+startzeit_dieses+"\n\nzeit_verstrichen = "+zeit_verstrichen+"\nletztes_verstrichen = "+letztes_verstrichen+"\n\nbildgroesse_verstrichen = "+bildgroesse_verstrichen+"\n\n")

var text_ladestatus = "["+bildgroesse_verstrichen+"k/"+bildgroesse_gesamt_KB+"k]bei[~"+verstrichen_caKBproSEC+"k/s]z.Zt.["+letztes_exaktKBproSEC+"k/s]noch[~"+verbleibende_zeit_ca+"s]";
   top.status = text_ladestatus;

if (n_geladene_bilder >= alle_bilder)
    {
    dann
    tue,
    was
    immer
    Du
    willst;

top.status = "alle BILDER geladen !";
    }
   }
  //-->
  </script>
  </HEAD>

<BODY onload="top.BILDER.location.href="bilder.htm">
  </BODY>

</HTML>

//  
//die naechste datei heisst "bilder.htm" und laedt bilder in normalen <img ...>-tags vor  
//alle <image>-objekte rufen beim onload-event die function LADEZUSTAND\_BILDER\_ZEIGEN(dieses\_groesseKB)  
//im [frame] top.SCRIPTE auf  
//natuerlich muessen fuer ein richtiges preload die bildquellen noch variablen zugewiesen werden  
//auf die kann man dann spaeter ueber top.BILDER.variablenname zugreifen - schoen nicht ?!?!?!!!  
//  

<!doctype html public "-//W3C//DTD HTML 3.2//EN">
  <HTML>

<HEAD>
  <TITLE> alle meine BILDER </TITLE>
  </HEAD>

<BODY>
  <img src="deine_quelle_01.xxx" width="0" height="0" name="DEINE_QUELLE_01" border="0" alt="... dein_alternativer_text ..." onload="top.SCRIPTE.LADEZUSTAND_BILDER_ZEIGEN(XX.XX)">
  <script language = "JavaScript">
  if (document.images)
   {
   var deine_quelle_01 = new Image();deine_quelle_01.src = top.BILDER.document.images["DEINE_QUELLE_01"].src;
   }
  </script>
  <img src="deine_quelle_02.xxx" width="0" height="0" name="DEINE_QUELLE_02" border="0" alt="... dein_alternativer_text ..." onload="top.SCRIPTE.LADEZUSTAND_BILDER_ZEIGEN(XX)">
  <script language = "JavaScript">
  if (document.images)
   {
   var deine_quelle_02 = new Image();deine_quelle_02.src = top.BILDER.document.images["DEINE_QUELLE_02"].src;
   }
  </script>
  .
  .

<img src="deine_quelle_XX.xxx" width="0" height="0" name="DEINE_QUELLE_XX" border="0" alt="... dein_alternativer_text ..." onload="top.SCRIPTE.LADEZUSTAND_BILDER_ZEIGEN(XX.XX)">
  if (document.images)
   {
   var deine_quelle_XX = new Image();deine_quelle_XX.src = top.BILDER.document.images["DEINE_QUELLE_XX"].src;
   }
  </script>
  </BODY>

</HTML>

//  
//  
alle angaben ohne garantie, da ich das alles hier in kuerze  
aus irgendwelchen projekten von mir zusammengestoppelt habe  

wenns nicht auf anhieb funktioniert, liegt das an meinem  
eben praktizierten fehlerbehafteten copy+paste !!!!!!!!!  

---------------------------------------------------------------------------------------------------------------------  

viel spass und by(t)e by(t)e - pseliger@gmx.net