# script VOR dem laden der seite ausführen?



## Bomber (24. Juni 2002)

ok ich habe folgendes script, dass mir einen layer horizontal und vertikal zentriert:


```
function init()
	{
    var hmid = screen.availHeight/2-400;
	var vmid = screen.availWidth/2-250;
	
	document.all.main.style.top  = hmid;
	document.all.main.style.left = vmid;
	}
```

So, die wird per 


```
<body onload="init()">
```

gestartet. allerdings sieht es etwas doof aus weil erst der layer inhalt, also die eigentliche ganze seite geladen wird und dann erst das script ausgeführt dh. der layer zentriert wird.

kann man das irgendwie anders machen, so das zuerst der layer zentriert und dann die ganze chose geladen wird?

danke im vorraus.
b.


----------



## Deemax (25. Juni 2002)

So ganz spontan würde ich sagen das du den Layer unsichtbar schaltest und nach dem zentrieren wieder sichtbar. 

So könnte deine Problem behoben werden.


----------



## Quentin (25. Juni 2002)

einfach cheaten 

onload wird ausgeführt, wenn das laden der seite abgeschlossen ist..

probiers so zu umgehen

<body>
<script>init();</script>
...
lalalla
...
</body>

wenn das nicht geht kannsts ja auch im <head>-bereich probieren....

hope that helps

gruß
q


----------



## Samuel (25. Juni 2002)

einfach

```
<html>
<head>
<script language="JavaScript">
function init() {
  ...
}
init();
</script>
</head>
<body>
bla
</body>
</html>
```
greetZZzz


----------



## Vadi (18. August 2008)

diese idee funktioniert bedauerlicher weise auch nicht. 
ich suche auch schon seit längerem eine möglichkeit mein layerscript vor dem laden der page einzublenden zu lassen.

über jede idee würd ich mich freuen 

mfg
vadi


----------



## kuddeldaddeldu (18. August 2008)

Hi,

Du kannst nicht auf ein Element zugreifen, wenn es noch gar nicht geladen ist.
Zentriere Dein Element per CSS.

LG


----------



## Maik (18. August 2008)

Hi,


kuddeldaddeldu hat gesagt.:


> Zentriere Dein Element per CSS.


und hier zwei mögliche Techniken zur horizontalen und vertikalen Zentrierung:


Zentrieren mit nur einem Element
CSS vertical centering using float and clear
mfg Maik


----------



## Sven Mintel (18. August 2008)

@Vadi:
Zeige doch mal dein Layerskript, möglicherweise benötigst du ja etwas ganz anderes als der Themenersteller vor 6 Jahren :suspekt:

Eines sollte jedoch klar sein, da ein Skript Bestandteil des Dokumentes ist, muss das Dokument zumindest so weit geladen werden, bis das Skript eingelesen ist, alles andere wäre Hexerei


----------



## FipsTheThief (19. August 2008)

Die Möglichkeit die es gäbe , wäre das JavaScript auszuführen sobald der DOM geladen wurde und nicht erst wenn das Fenster geladen wurde.

Eine CSS Lösung wäre hier aber sauberer.

Hier mal meine Funktion die ich nutze wenn ich JavaScript ausführen will wenn der DOM bereits fertig ist und die Bilder mich erstmal nicht interessieren.


```
var DOM = {
    domCheck:false,
    domReady:false,
    inRow:new Array(),
    loaded:function (func) {
        DOM.inRow.push(func);
        if(!DOM.domCheck) {
            (function(){
                DOM.domCheck = true;
                    
                if(document.all && /msie/i.test(navigator.userAgent)) {
                    document.write("<script type='text/javascript' id='dummyScript' defer src='javascript:void(0);'><\/script>");
                    var ds = document.getElementById("dummyScript");
                        
                    ds.onreadystatechange = function () {
                        if(this.readyState == "complete") {
                            DOM.domReady = true;
                            domLoaded();
                        }
                    };
                } else {
                    document.addEventListener("DOMContentLoaded",function () { DOM.domReady = true;domLoaded(); },false);
                }
                return null;
            })();
        } else {
            if(DOM.domReady) {
                func();
            }
        }
            
        function domLoaded(){
            for(func in DOM.inRow) DOM.inRow[func]();
        };
    }
};
```

Aufruf wäre dann  so 


```
<html>
   <head>
      <script type="text/javascript">
          function initScripte () {
             // scripte werden nun gestartet
          }

          DOM.loaded(initScripte);
      </script>
   </head>
   <body>
    ....
   </body>
</html>
```

Klappte bisher immer ganz gut. Auch im Safari auch wenn ich dafür mal irgendwelche Workarounds gefunden hatte , aber die scheinen schon veraltet gewesen zu sein.


----------

