conrad: onLoad fkt. nicht

hallo,

ich habe folgendes script:

<body onLoad="showWindow()">
<script language="JavaScript">
<!--

// Variablendeklaration und Anpassung des Layouts
var bWindow_Mouse = 1;     // Fenster an Link oeffnen (1=JA >> 0=nein
var iWidth    = 150;     // Breite des Fenster (Tabelle)
var iHeight    = 50;     // Hoehe des Fenster (Tabelle)
var ixPos     = 300;    // Startposition des Fenster von Links
var iyPos     = 100;    // Startposition des Fesnter von Oben
var sbg_color   = "WHITE";  // Hintergrundfarbe des Fenster
var sbr_color   = "black";   // Borderfarbe des Rahmen

// Browser identifizieren
ie = (document.getElementById && document.all && document.styleSheets) ? true:false;
nn = (document.getElementById && !document.all) ? true:false;

// Tabellengroessen festlegen
if(ie)
 tblheight=10;
else
 tblheight=8;

document.write(
      "<div id='cc' style='position:absolute;top:-1000;left:0'>"+
        "<table style='border-style:outset;border-width:1;border-color:"+sbr_color+";background-color:red' width='"+iWidth+"' height='"+iHeight+"'>"+
         "<tr>"+
         "<td height='"+tblheight+"'><center><font size='2' color='#ffffff' face='verdana'><b>Bitte warten</b></center></td>"+
        "</tr>"+
        "<tr>"+
         "<td><center><font size='2' color='#ffffff' face='verdana'><b>...</b></center></td>"+
        "</tr>"+
        "<tr>"+
         "<td><center><font size='2' color='#ffffff' face='verdana'><b>lade Seite</b></center></td>"+
        "</tr>"+
        //"<tr>"+
        // "<td><center><input style='border-style:outset;border-width:0;border-color:"+sbr_color+";background-color:red' type=button onClick=hiddenWindow() value='Fenster schließen'></td>"+
        //"</tr>"+
       "</table></center>"+
      "</div>"
      );

// Fenster anzeigen
function showWindow()
{
 if(ie)
 {
  document.getElementById("cc").style.left = ixPos;
  document.getElementById("cc").style.top  = iyPos;
  document.getElementById("cc").style.visibility = "visible";
 }
 else if(nn) {
  document.getElementById("cc").style.left = ixPos;
  document.getElementById("cc").style.top  = iyPos;
  document.getElementById("cc").style.visibility = "visible";
 }
  else alert("Ihr Browser versteht den "getElementById" Tag nicht, schade!");
}

function hiddenWindow()
{
 document.getElementById("cc").style.visibility = "hidden";
}
//-->
</script>
<body onLoad="javascript:hiddenWindow();">

leider schließt sich das fenster nicht automatisch.

warum nicht?

bzw. wie kann ich es erreichen, dass wenn ein user auf die seite geht ein fester kommt, das die seite geladen wird, und beim fertigen laden der seite, das fenster automatisch geschlossen wird?

habe zwar eine lösung, aber wenn man einen popup blocker hat, fkt. diese nicht.

danke

conrad

  1. Hallo conrad,

    <body onLoad="showWindow()">

    ...

    <body onLoad="javascript:hiddenWindow();">

    also was jetzt? Zeigen oder nicht? Und zwei BODYs sind nicht erlaubt. Den Rest hab ich mir nicht genauer angesehen.

    Gruß, Jürgen

  2. hi,

    wie kann ich es erreichen, dass wenn ein user auf die seite geht ein fester kommt, das die seite geladen wird, und beim fertigen laden der seite, das fenster automatisch geschlossen wird?

    Wozu solltest du sowas wollen?
    _Dass_ die Seite geladen wird, sehe ich sowieso an der Ladestandsanzeige meines Browsers.
    Ein zusätzliches Fenster, welches mir anzeigen will, dass die ursprüngliche Seite geladen wird, muss selbst auch erst einmal geladen oder zumindest, bei dynamischer clientseitiger Erzeugung des Outputs, dargestellt werden - das kostet zusätzliche Ressourcen und damit vor allem Zeit.
    Du machst also damit den Vorgang, auf den ich als User warte, noch länger.

    habe zwar eine lösung, aber wenn man einen popup blocker hat, fkt. diese nicht.

    Ein weiterer Grund, der dagegen spricht, so etwas überhaupt zu veranstalten.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo,

    dein Ansatz ist nicht zielführend. Der load-Event feuert, wenn die Seite fertig geladen ist, nicht während sie lädt. Du willst beim Laden etwas zeigen, aber beim fertigen Laden wieder verstecken. Also kannst du ein Element per JavaScript ins Dokument schreiben, das direkt angezeigt wird. Beim onload wird es dann versteckt.
    Im Übrigen wird ein solches Wartefenster bei den meisten Sites nur nerven, schließlich ist das Dokument schon grundlegend bedienbar, auch wenn nicht alle externen Quellen geladen sind. Das ist ein Vorteil von Webseiten für den Leser, kein Nachteil!

    // Browser identifizieren
    ie = (document.getElementById && document.all && document.styleSheets) ? true:false;
    nn = (document.getElementById && !document.all) ? true:false;

    Das ist unnötig.

    document.write(
          "<div id='cc' style='position:absolute;top:-1000;left:0'>"+
            "<table style='border-style:outset;border-width:1;border-color:"+sbr_color+";background-color:red' width='"+iWidth+"' height='"+iHeight+"'>"+
             "<tr>"+
             "<td height='"+tblheight+"'><center><font size='2' color='#ffffff' face='verdana'><b>Bitte warten</b></center></td>"+

    Für so etwas nutzt man Style Sheets.

    if(ie)
    {
      document.getElementById("cc").style.left = ixPos;
      document.getElementById("cc").style.top  = iyPos;
      document.getElementById("cc").style.visibility = "visible";
    }
    else if(nn) {
      document.getElementById("cc").style.left = ixPos;
      document.getElementById("cc").style.top  = iyPos;
      document.getElementById("cc").style.visibility = "visible";
    }

    Welchen Sinn hat die Browserabfrage, wenn beide Anweisungsblöcke gleich aussehen?
    Frage einfach auf if (document.getElementById) ab.

    Mathias

  4. conrad,
    Zusätlich zum bereits Gesagtem:

    <script language="JavaScript">

    Das fürs script-Element zwingend notwendige type-Attribut fehlt. Das language-Attribut ist überflüssig, je nach HTML-Version evtl. sogar falsch.
    <script type="text/javascript">

    <body onLoad="javascript:hiddenWindow();">

    Der Wert des onload-Eventhandlers sind JavaScript-Anweisungen. "javascript:" hat darin nichts zu suchen.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)