1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Pre-loader editieren

Dieses Thema im Forum "Javascript & Ajax" wurde erstellt von EnQuI, 3. August 2003.

  1. EnQuI

    EnQuI Grünschnabel

    Hallo,

    Ich bin neu im JavaScript bereich. Ich habe aber kürzlich einen Bild Preloader in meine Homepage integriert. Leider weist er eine eigentümlichkeit auf, die ich mit meinen Fähigkeiten nicht editieren kann, deshalb bitte ich hier um Hilfe. Der Preloader Quellcode ist fogender:

    Code (Text):
    1. <SCRIPT language="JavaScript">
    2. <!--
    3.  
    4. // Bilder des Preloaders Definieren
    5. var pics = new Array("../../img/ani_ter1.gif", etc..");
    6.  
    7. // URL - Welche nach dem Preloaden aufgerufen wird.
    8. var url = "index.html";
    9.  
    10.  
    11. // Benutzer erlauben das Preloaden zu Überspringen [True /False]
    12. var canSkip = true;
    13.  
    14.  
    15. // NICHTS MEHR EDITIREN AB HIER!!!
    16. var imgObjs = new Array(pics.length);
    17. var loaded = 0;
    18. var total = pics.length;
    19. var cPercent = 0;
    20.  
    21. var barLayer = null;
    22. var percentLayer = null;
    23. var statLayer = null;
    24. var doneMsgLayer = null;
    25.  
    26.  
    27. function getLayer(layerID) {
    28. if (document.getElementById)
    29.     return document.getElementById(layerID);
    30. else if (document.all)
    31.     return document.all[layerID];
    32. else
    33.     return null;
    34. }
    35.  
    36.  
    37. function updateBar() {
    38. statLayer.innerHTML = "<font face=\"Arial\" color=\"#FFFFFF\"><B>" +loaded+ "/" +total+ "</B></font>";
    39. var percent = Math.round(loaded/total * 100);
    40. if (cPercent != percent)
    41.     {
    42.     cPercent = percent;
    43.     barLayer.style.width = (cPercent*3) +"px";
    44.     percentLayer.innerHTML = "<font color=\"#CC0033\"><B>" +cPercent+ "%</B></font>";
    45.     }
    46. if (loaded == total)
    47.     {
    48.     doneMsgLayer.innerHTML = "<a href=\"javascript:done()\"><font face=\"Arial\" color=\"#FFFFFF\" size=\"2\"><B>fertig</B></font></a>";
    49.     done();
    50.     }
    51. }
    52.  
    53.  
    54.  
    55.  
    56. function startLoading() {
    57. if (document.getElementById || document.all)
    58.     {
    59.     barLayer = getLayer("bar");
    60.     percentLayer = getLayer("percent");
    61.     statLayer = getLayer("stat");
    62.     doneMsgLayer = getLayer("doneMsg");
    63.     if (canSkip)
    64.         doneMsgLayer.innerHTML = "<a href=\"javascript:done()\"><font color=\"#FFFFFF\" size=\"2\" face=\"Arial\">preload überspringen</font></a>";
    65.     for (i=0; i<pics.length; i++)
    66.         {
    67.         imgObjs[i] = new Image();
    68.         imgObjs[i].onload = imgLoaded;
    69.         imgObjs[i].onerror = imgFailed;
    70.         imgObjs[i].src = pics[i];
    71.         }
    72.     }
    73. else
    74.     {
    75.  
    76.     window.location.replace(url);
    77.     }
    78. }
    79.  
    80. function done() {
    81. parent.window.location.replace(url);
    82.  
    83. }
    84.  
    85. function imgFailed() {
    86. alert("The following image failed to load, probably a broken link:\n" +this.src+ "\nPlease contact the webmaster of the site you are visiting about this.  The program will skip this file now.");
    87. loaded++;
    88. updateBar();
    89. }
    90.  
    91. function imgLoaded() {
    92. loaded++;
    93. if (loaded>pics.length)
    94. return
    95. updateBar();
    96. }
    97.  
    98. window.onload=startLoading
    99.  
    100. // -->
    101. </SCRIPT>
    Ich höchte das er nach dem Preloaden die geladene Seite in einem Frame öffnet. (Wahrscheinlich) durch den Fett markierten bereich, geht die Pre-geloadete Seite aber in einem Neuen fenster auf. Es soll aber in einem Frame mit target Bezeichnung "main" aufgemacht werden. Wie kann ich den Quellcode editieren, dass er es in "main" öffnet ?!

    Vielen Dank,

    NewBe
    Enqui
     
  2. Andreas Gaisbauer

    Andreas Gaisbauer Erfahrenes Mitglied

    Hallo,

    es sollte funktionieren wenn du follgende Teile austauscht (wie richtig vermutet):
    Code (PHP):
    1. parent.window.location.replace(url);
    mit
    Code (PHP):
    1. parent.main.location.replace(url);
    und zwar an beiden Stellen - in startLoading() und done()


    bye
     
  3. EnQuI

    EnQuI Grünschnabel

    :) Juhuuu-! :) Du bist göttlich Danke. Es funktioniert.

    Ich hab es (nur) in done() ausgetauscht weil ich die location in startLoading() nicht richtig weiß [meinst du das in der else Anweisung window.location.replace(url); ?], aber es funktioniert so. :)
    Gut wenn man sich mit JS auskennt. Ich werd mich dann mal auch mal reinkniehen.

    Vielen Dank
    Enqui
     
  4. Andreas Gaisbauer

    Andreas Gaisbauer Erfahrenes Mitglied

    Hallo,

    ja, ich mein das im else-Zweig, das würd ich noch ändern, da der else Zweig bei älteren Browsern (welche kein document.getElementById kennen) ausgeführt wird, und die sollten doch auch im Frame laden...


    bye
     
Die Seite wird geladen...