Dominik Amon: Preload Images

Hallo!

Ich habe ein Problem mit dem vorladen von Grafiken. Ich habe ein Fotoalbum gebastelt, jedes Fotoalbum hat eine Art "Startseite", ich möchte das die Bilder des Fotoalbums schon einmal vorgeladen werden (weil der User sich sowieso den Text durchliest).

Das Problem hierbei ist ja das ich bereits ein JavaScript dafür eingebaut habe dass das machen soll, nur hat das irgendwie nicht so hin.

Zu finden unter http://fotos.amon.cc/, das JavaScript findet man unter http://fotos.amon.cc/Library/JavaScript/Global.js

Es ist absolut nix besonders, es gibt keinen Fehler funktioniert aber trotzdem nicht, bitte um Hilfe!

danke,
dominik

  1. Hallo!

    Ich habe ein Problem mit dem vorladen von Grafiken. Ich habe ein Fotoalbum gebastelt, jedes Fotoalbum hat eine Art "Startseite", ich möchte das die Bilder des Fotoalbums schon einmal vorgeladen werden (weil der User sich sowieso den Text durchliest).

    Das Problem hierbei ist ja das ich bereits ein JavaScript dafür eingebaut habe dass das machen soll, nur hat das irgendwie nicht so hin.

    Zu finden unter http://fotos.amon.cc/, das JavaScript findet man unter http://fotos.amon.cc/Library/JavaScript/Global.js

    keine Ahnung, das is mir jetzt zu viel Arbeit, aber...
    addImageToLoad('Library/Galleries/2RedBullSKR/F0000001.jpg');
    addImageToLoad('Library/Galleries/2RedBullSKR/F0000003.jpg');
    addImageToLoad('Library/Galleries/2RedBullSKR/F0000004.jpg');

    ...... das geht wieter bis

    addImageToLoad('Library/Galleries/2RedBullSKR/F0000151.jpg');

    Du kennst Schleifen?

    var pfad = 'Library/Galleries/2RedBullSKR/';

    for(var i = 1; i < 152; i++)
    {
    var src = pfad + 'F' +getName(i, 7) + '.jpg';
    addImageToLoad(src);
    }

    /* formatiert eine Zahl mit führenden Nullen */
    function getName(nr, l)
    {
        var p = Math.pow(10, l);
        var ret = nr + p;
        ret += '';
        return ret.substring(1);

    }

    Struppi.

  2. hi,

    Ich habe ein Problem mit dem vorladen von Grafiken. [...]
    Das Problem hierbei ist ja das ich bereits ein JavaScript dafür eingebaut habe dass das machen soll, nur hat das irgendwie nicht so hin.

    verstehst du denn überhaupt, was dein javascript machen soll, oder hast du es einfach nur irgendwoher kopiert und "reingeklatscht"?

    Es ist absolut nix besonders, es gibt keinen Fehler funktioniert aber trotzdem nicht, bitte um Hilfe!

    also ich sehe den IE in der statusleiste anzeigen, dass er "noch 200+ objekte zu laden" hat, und die zahl wird immer geringer - ich würde sagen, der scheint schon vorzuladen ...

    gruss,
    wahsaga

  3. Hi,
    abgesehen davon, daß es dort nicht "genug" zu lesen gibt, um alle Bilder vorzuladen (jedenfalls bei ISDN), ist Dein Problem ein ganz anderes: sobald ich - wenn noch nicht alle Bilder geladen sind - eines anklicke, werden die übrigen Thumbnails nicht mehr geladen.
    Außerdem sperrst Du mit <a href="javascript:;" onClick=... einige Besucher aus...

    freundliche Grüße
    Ingo

  4. Ich finde es schade das nicht eine sinnvolle Antwort dabei ist :-(
    BTW: Ich entwickle meine Skripts selber, brauche nix kopieren. Und das unten steht Bild x von y zu laden liegt schlicht und einfach daran das ich mit window.status das ausgebe, vorladen tut er nicht, habe ISDN und dann fehlen immer noch bilder und genau das ist das Problem

    Die Frage bleibt somit offen

    1. Ich finde es schade das nicht eine sinnvolle Antwort dabei ist :-(

      Es sind alle Antworten sinnvoll.
      Dein Code ist unnötig aufgebläht.
      Du benutzt JS Links falsch (weil unnötig Leute ausgesperrt werden)
      Und du gibst uns keine sinnvolle Möglichkeit dir einfach zu helfen.

      Die Frage bleibt somit offen

      Du erwartest auch ein bisschen viel. Wir sollen uns durch ellenlangen Code quälen, der zumnidest beim ersten drüberblicken schon sinnlos aufgebläht ist. Ich weiß ja nicht was du denkst was wir machen, aber hier ist nicht dein kostenloses Supportteam. Ein bisschen Vorarbeit wäre sinnvoll.

      Struppi.

      1. Es sind alle Antworten sinnvoll.

        leider nicht - ich bin mit dem Ziel ins Forum gekommen um Hilfe für meine Problemstellung zu erhalten. Stattdessen erhalte ich wertlose Kritik.

        Da aber jemand anderer nach mir die selbe Frage gestellt hat nur ohne Code Beispiel und ein komplettes Skript erhalten hat, werde ich mir den mal genauer ansehen, was bei meinem Code zb fehlte war die abfrage auf die "complete" Eigenschaft des Image Objektes. Leider funzt noch nicht ganz aber das muss ich wohl oder übel selbst raus finden

        mfg

        1. leider nicht - ich bin mit dem Ziel ins Forum gekommen um Hilfe für meine Problemstellung zu erhalten. Stattdessen erhalte ich wertlose Kritik.

          Also du bist der Meinung eine Verbesserung deines Skriptes wäre Wertlos?
          Du hast ungefähr 300 Zeilen code, die du mit meines Hilfe auf ca.20 reduzieren könntest und das hälst du für wertlos?

          du solltest deinen Beruf wechseln. Wenn du mit Programmieren zu tun hast gibt es immer Möglichkeiten der Verbesserungen.

          Da aber jemand anderer nach mir die selbe Frage gestellt hat nur ohne Code Beispiel und ein komplettes Skript erhalten hat, werde ich mir den mal genauer ansehen, was bei meinem Code zb fehlte war die abfrage auf die "complete" Eigenschaft des Image Objektes. Leider funzt noch nicht ganz aber das muss ich wohl oder übel selbst raus finden

          Wo ist derjenige? Ich find ihn nicht. Wen du das meinst [pref:t=56892&m=318143] da hat der Frager selber irgendwas gefunden, was aber ziemlich sinnfrei erscheint.

          Die complete Eigenschaft ist nicht besonders nutzbar es gibt onload und onerror dafür, aber wie gesagt wenn du dir nicht die Mühe machen willst das was bei dir die Probleme verursacht aus deinem Skript rauszuholen wird dir keiner helfen wollen und können.

          Und preloader sind einerseits relativ nutzlos und mit der Menge der Bilder die du vorladen möchtest kann es auch Diebstahl sein.
          Dir ist bekannt, das es Provider gibt die nach Datenmenge abrechnen. D.h. du zwingst evtl. jemanden Kosten auf, ohne das du sicher bist, das derjenige das auch will. Und das für eine Sache die keinerlei Vorteile bringt gegenüber dem normalen Verhalten im Internet. das Bilder oder Seiten einen Augenblick brauchen ist völlig normal und wird auch niemanden verwirren, wenn aber plötzlich die Leitung anfängt zu rauchen, wie bei dir (oder wie du es vorhast), werden eher einige verschreckt die Seite zumachen.

          Struppi.

          1. leider nicht - ich bin mit dem Ziel ins Forum gekommen um Hilfe für meine Problemstellung zu erhalten. Stattdessen erhalte ich wertlose Kritik.

            Also du bist der Meinung eine Verbesserung deines Skriptes wäre Wertlos?
            Du hast ungefähr 300 Zeilen code, die du mit meines Hilfe auf ca.20 reduzieren könntest und das hälst du für wertlos?

            du solltest deinen Beruf wechseln. Wenn du mit Programmieren zu tun hast gibt es immer Möglichkeiten der Verbesserungen.

            Mir sind 50 Zeilen lesbarer Code lieber als 20 Zeilen Code unlesbarer Code. Dir URLs die kommen werden dynamisch generiert. Wie du auch gesehen hast sind auch nicht alle Bilder durchgehen 1,3,4 (... hier fehlt zb Nummer 2) es wird zukünfig sogar so sein, dass die Ordner anders sein werden, da mehrere Alben gejoined werden.

            Es stimmt schon das es im Quelltext nicht lustig aussieht, wenn da so eine Liste daher kommt nur gehts nicht anders!

            Wo ist derjenige? Ich find ihn nicht. Wen du das meinst [pref:t=56892&m=318143] da hat der Frager selber irgendwas gefunden, was aber ziemlich sinnfrei erscheint.

            Solange es funktioniert

            Die complete Eigenschaft ist nicht besonders nutzbar es gibt onload und onerror dafür,

            Ich habe das Skript bereits geändert auf complete wirklich funktionieren tut es noch immer nicht.

            Und preloader sind einerseits relativ nutzlos und mit der Menge der Bilder die du vorladen möchtest kann es auch Diebstahl sein.

            Die Bilder wurden ausnahmslos von mir erstellt, die Unterstellung Diebstahl begannen zu haben ist Verleumdung!

            Dir ist bekannt, das es Provider gibt die nach Datenmenge abrechnen. D.h. du zwingst evtl. jemanden Kosten auf, ohne das du sicher bist, das derjenige das auch will. Und das für eine Sache die keinerlei Vorteile bringt gegenüber dem normalen Verhalten im Internet.

            Ist Geschmacksache, mir gefällt es überhaupt nicht ewig zu warten (habe ISDN), es ist wesentlich besser das er lädt während ich mir den Text durchschaue, es kommt einfach besser rüber wenn man dann schaut und es sind schon die Vorschaubilder hier, ein Bild hat rund 4KB. Da ist es sinnvoller die paar KB vorzuladen anstelle warten zu müssen. Abgesehen davon wird es angezeigt das die Bilder geladen werden also nicht im verborgenen.

            das Bilder oder Seiten einen Augenblick brauchen ist völlig normal und wird auch niemanden verwirren, wenn aber plötzlich die Leitung anfängt zu rauchen, wie bei dir (oder wie du es vorhast), werden eher einige verschreckt die Seite zumachen.

            Falsch siehe oben

            Davon abgesehen sind das ja nicht irgendwelche Leute die sich meine Fotos ansehen sondern Freunde die ich persönlich kenne. Und das sind alle wie auch ich BMW, Mercedes Fahrer selbst wenn die so einen Tarif hätten bringt das von uns niemand um ;)

            Wenn du aber weißt wie man das Skript zum Laufen bringt so das er die Bilder wirklich richtig vorlädt wäre das sehr hilfreich

            mfg

            1. Mir sind 50 Zeilen lesbarer Code lieber als 20 Zeilen Code unlesbarer Code. Dir URLs die kommen werden dynamisch generiert. Wie du auch gesehen hast sind auch nicht alle Bilder durchgehen 1,3,4 (... hier fehlt zb Nummer 2) es wird zukünfig sogar so sein, dass die Ordner anders sein werden, da mehrere Alben gejoined werden.

              Mein Beispiel war auf deine mehr als 300 Zeilen gemünzt, die 5 Zeilen die stattdessen nötig wären, liessen sich noch sehr flexibel anpassen. z.b. ist es kein Problem mit JS zu checken ob ein Bild existiert. Und man kann durchaus Variabeln für Pfade benutzen. Ich sehe nicht die Notwendigkit für so einen aufgeblähten Code (der ja nicht funktioniert)

              Wo ist derjenige? Ich find ihn nicht. Wen du das meinst [pref:t=56892&m=318143] da hat der Frager selber irgendwas gefunden, was aber ziemlich sinnfrei erscheint.

              Solange es funktioniert

              tut es aber nicht.

              Die complete Eigenschaft ist nicht besonders nutzbar es gibt onload und onerror dafür,

              Ich habe das Skript bereits geändert auf complete wirklich funktionieren tut es noch immer nicht.

              Ich schrieb "complete ist nicht nutzbar, dafür gibt es onload bzw. onerror."
              Da du zu faul bist ein wenig zu suchen:

              var img = new Image();
              img.onload = function() { alert(this.src + ' ist fertig geladen');};
              img.onerror = function() { alert(this.src + ' existiert nicht');};

              img.src = url;

              so kannst du ein preload bewerkstelligen. Aber wie gesagt ich finde sowas unhöflich und für mich auch einer von mehreren Gründen, warum ich JS auschalte.

              »

              Und preloader sind einerseits relativ nutzlos und mit der Menge der Bilder die du vorladen möchtest kann es auch Diebstahl sein.

              Die Bilder wurden ausnahmslos von mir erstellt, die Unterstellung Diebstahl begannen zu haben ist Verleumdung!

              Ich hab nicht gesagt das du die Bilder gestohlen hast, sondern du zwingst deine Besucher 300 bilder vorzuladen und weißt du ob diese nicht einen Provider nutzen der nach Datenmenge abrechnet? Das weißt du nicht und die die sowas haben bestiehlst du wenn sie deine Bilder gar nicht angucken wollen.

              Dir ist bekannt, das es Provider gibt die nach Datenmenge abrechnen. D.h. du zwingst evtl. jemanden Kosten auf, ohne das du sicher bist, das derjenige das auch will. Und das für eine Sache die keinerlei Vorteile bringt gegenüber dem normalen Verhalten im Internet.

              Ist Geschmacksache, mir gefällt es überhaupt nicht ewig zu warten (habe ISDN), es ist wesentlich besser das er lädt während ich mir den Text durchschaue, es kommt einfach besser rüber wenn man dann schaut und es sind schon die Vorschaubilder hier, ein Bild hat rund 4KB. Da ist es sinnvoller die paar KB vorzuladen anstelle warten zu müssen. Abgesehen davon wird es angezeigt das die Bilder geladen werden also nicht im verborgenen.

              [ ] Du hast verstanden was ich gesagt habe?

              Wenn du aber weißt wie man das Skript zum Laufen bringt so das er die Bilder wirklich richtig vorlädt wäre das sehr hilfreich

              klar weiss ich dass, da ich aber keine Bock auf kostenlosen support habe, d.h. deine huinderte Zeilen von Code durchzuwälzen, wird es wohl nicht klappen.

              Struppi.

              1. var img = new Image();
                img.onload = function() { alert(this.src + ' ist fertig geladen');};
                img.onerror = function() { alert(this.src + ' existiert nicht');};

                img.src = url;

                werde ich heute abend mal ausprobieren

                so kannst du ein preload bewerkstelligen. Aber wie gesagt ich finde sowas unhöflich und für mich auch einer von mehreren Gründen, warum ich JS auschalte.

                Jedem das seine, Browser sind ja konfigurierbar.

                Ich hab nicht gesagt das du die Bilder gestohlen hast, sondern du zwingst deine Besucher 300 bilder vorzuladen und weißt du ob diese nicht einen Provider nutzen der nach Datenmenge abrechnet? Das weißt du nicht und die die sowas haben bestiehlst du wenn sie deine Bilder gar nicht angucken wollen.

                Nun man muss den Begriff Diebstahl überspannt kann man alles als Diebstahl bezeichnen, (Autokauf wegen dem argen Wertverlust pro Jahr etc.)

                »»Ist Geschmacksache, ...
                [ ] Du hast verstanden was ich gesagt habe?

                doch, darum schreibe ich: Ist geschmacksache, und über Gescmäcker kann man endlos streiten und trotzdem zu keinem Ergebnis kommen :-)

                Wenn du aber weißt wie man das Skript zum Laufen bringt so das er die Bilder wirklich richtig vorlädt wäre das sehr hilfreich

                klar weiss ich dass, da ich aber keine Bock auf kostenlosen support habe, d.h. deine huinderte Zeilen von Code durchzuwälzen, wird es wohl nicht klappen.

                Schade aber dann brauchst du erst gar nicht antworten, es ist nun mal das Prinzip von so einem Forum darum stelle ich es ja rein. Kostenlos würde ich es nicht bezeichnen, mehr wie ein Tauschhandel, ich beantworte oft auch fragen, meistens jedoch in der C# NG und nicht in diesem Forum sollte sich aber ausgleichen

                mfg
                dominik

                1. Ich hab nicht gesagt das du die Bilder gestohlen hast, sondern du zwingst deine Besucher 300 bilder vorzuladen und weißt du ob diese nicht einen Provider nutzen der nach Datenmenge abrechnet? Das weißt du nicht und die die sowas haben bestiehlst du wenn sie deine Bilder gar nicht angucken wollen.

                  Nun man muss den Begriff Diebstahl überspannt kann man alles als Diebstahl bezeichnen, (Autokauf wegen dem argen Wertverlust pro Jahr etc.)

                  Unverlangter Datentransfer ist schwer mit einem Kauf vergleichbar.

                  Wenn du aber weißt wie man das Skript zum Laufen bringt so das er die Bilder wirklich richtig vorlädt wäre das sehr hilfreich

                  klar weiss ich dass, da ich aber keine Bock auf kostenlosen support habe, d.h. deine huinderte Zeilen von Code durchzuwälzen, wird es wohl nicht klappen.

                  Schade aber dann brauchst du erst gar nicht antworten, es ist nun mal das Prinzip von so einem Forum darum stelle ich es ja rein. Kostenlos würde ich es nicht bezeichnen, mehr wie ein Tauschhandel, ich beantworte oft auch fragen, meistens jedoch in der C# NG und nicht in diesem Forum sollte sich aber ausgleichen

                  Jaja, ist alles ok, aber du hast hier eine seite gepostet mit getrennten JS code, der in meinem Augen alles andere als Lesefreundlich (und - ich wiederhole mich - umständlich) ist.

                  Ich glaube kaum dass du 1,000 Zeilen Code durchliest um eine wage Frage, wo noch nicht mal angegen ist wie die Funktion aussieht, zu beantworten, wenn doch hut ab vor deiner selbstlosigkeit.

                  Ich hätte nur erwartet, das du die Funktion, die dein 'preload' durchführen soll hier mal gepostet hättest. sind wahrscheinlich nur 5 Zeilen Code, aber wenn dir diese 'Mühe' zuviel ist....

                  struppi.

                  1. Nun man muss den Begriff Diebstahl überspannt kann man alles als Diebstahl bezeichnen, (Autokauf wegen dem argen Wertverlust pro Jahr etc.)

                    Unverlangter Datentransfer ist schwer mit einem Kauf vergleichbar.

                    Nun einfache Dinge die man wissen muss: Wenn man auto fährt verliert es an wert. wenn man das web durchsurft sammelen sich MBs an, desshalb kann (ich zumindest) immer nachsehen wieviele MB ich schon gesammelt habe, nur haben die meisten leute in Ö entweder eine Flatrate oder Minutenabrechnung, eine Datenmenge Regelung gibts bei uns nur bei Handys mit dem man sich selten Internet Photoalben anschaut.

                    Jaja, ist alles ok, aber du hast hier eine seite gepostet mit getrennten JS code, der in meinem Augen alles andere als Lesefreundlich (und - ich wiederhole mich - umständlich) ist.
                    Ich glaube kaum dass du 1,000 Zeilen Code durchliest um eine wage Frage, wo noch nicht mal angegen ist wie die Funktion aussieht, zu beantworten, wenn doch hut ab vor deiner selbstlosigkeit.

                    Na du potenzierst ja gerne ein wenig jetzt sinds schon 1000 statt 300 statt evt 20 :-)

                    Ich hätte nur erwartet, das du die Funktion, die dein 'preload' durchführen soll hier mal gepostet hättest. sind wahrscheinlich nur 5 Zeilen Code, aber wenn dir diese 'Mühe' zuviel ist....

                    Ich glaube kaum das es so problematisch ist, nochdazu sehe ich mir gerne die "Umgebung" zu einem Problem an um evt. ganz andere Lösungswege anbieten zu können. Damit ist vielen Leuten auch geholfen, und evt. sogar besser als ihnen nur eine Funktion vorzuwerfen obwohl es anders vielleicht viel schöner ginge.

                    da ich auf der Website zur Zeit sowieso nur dieses eine JS Skript habe und nur diese Funktialität ists hoffentlich kein Prob.

                    mfg

                    1. Na du potenzierst ja gerne ein wenig jetzt sinds schon 1000 statt 300 statt evt 20 :-)

                      du vergißt den ganzen HTML Code.

                      es sind 301 unnötige JS Zeilen und insgesamt hat die Datei http://fotos.amon.cc/ 377 Zeilen. wie lang dein js Datei ist weiß ich nicht. Die Zahl bezog sich aber sowieso eher auf C# code der in der Regel  ja noch ausführlicher ist.

                      Ich hätte nur erwartet, das du die Funktion, die dein 'preload' durchführen soll hier mal gepostet hättest. sind wahrscheinlich nur 5 Zeilen Code, aber wenn dir diese 'Mühe' zuviel ist....

                      Ich glaube kaum das es so problematisch ist, nochdazu sehe ich mir gerne die "Umgebung" zu einem Problem an um evt. ganz andere Lösungswege anbieten zu können. Damit ist vielen Leuten auch geholfen, und evt. sogar besser als ihnen nur eine Funktion vorzuwerfen obwohl es anders vielleicht viel schöner ginge.

                      Ich hatte nur auf deinen einzigen anklickbaren Link geklickt und bin beim anblick des Quellcode erschaudert. Ich hab mir die JS Datei daher nicht mehr angeguckt. Stadessen habe ich dir aber einen anderen Lösungsweg gezeigt für das was mich erschaudern ließ. Ob diese Zeilen was mit deinem Problem zu tun hatten wußte ich nicht, aber wenn man sowas sieht könnte man auf den Gedanken kommen.
                       Darüber hinaus hab ich dir einen Tipp gegeben, mir ist schon klar das dir das egal ist, trotzdem sind preloader eine Pest.

                      da ich auf der Website zur Zeit sowieso nur dieses eine JS Skript habe und nur diese Funktialität ists hoffentlich kein Prob.

                      Hab' nie behauptet, dass die Funktionalität eingeschränkt ist, es ist nur eine deren Sinn ich nicht begreife.

                      Struppi.

                      1. es sind 301 unnötige JS Zeilen und insgesamt hat die Datei http://fotos.amon.cc/ 377 Zeilen.

                        davon sind 300 nahzu ident, aber wurscht :)

                        Darüber hinaus hab ich dir einen Tipp gegeben, mir ist schon klar das dir das egal ist, trotzdem sind preloader eine Pest.
                        Hab' nie behauptet, dass die Funktionalität eingeschränkt ist, es ist nur eine deren Sinn ich nicht begreife.

                        wie gesagt das ist reine Geschmackssache. ich werds heute abend probieren und dann bei nicht gelingen ggf erneut posten, mal schaun