2010-12-13 12 views
0

Ich habe ein Skript, das ich zu meiner xul Datei hinzufügen, wie:Wie Code vollständig vor dem Laden xul-Datei ausführen?

<?xml version="1.0" encoding="UTF-8"?> 

<!-- Bindings --> 
<?xml-stylesheet href="chrome://test/content/bindings.css" type="text/css"?> 

<mywindow id="myWindowID" width="800" height="600" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

    <script type="application/x-javascript" src="chrome://greenfox/content/jquery-1.4.4.min.js" /> 

</mywindow> 

und auf mywindow Konstruktor (an der Bindung) Ich verwende eine Funktion meines Scrip, genannt ‚Druck‘.

Das Problem ist, dass manchmal, mein Skript nicht wirklich schnell nicht geladen werden, bevor es verwendet wird, und ich erhalte die Meldung

Wir sind nicht in der Lage oder diese Seite Vorschau drucken zu drucken.

..die sich auf die Druckerverwendung bezieht.

Bitte beachten Sie, dass Ich bin nicht versuchen, den Drucker zu verwenden, ich versuche, meine eigene print Methode (im Skript, das nicht rechtzeitig geladen) zu verwenden, um einfach auf dem Bildschirm zu schreiben.

Also, jede Idee, wie kann ich die XUL-Datei warten, bis mein Skript vollständig geladen ist?

+0

Im Ernst, wenn Ihr Skript so lange dauert, dann laden Sie können nicht nur Ihre Funktionen verwenden, bis es geladen ist . Du willst nicht den ganzen Browser einfrieren, nur um dein Skript zu laden, oder? –

+0

@Felix Kling eigentlich, ich habe eine Desktop-Anwendung, so gibt es kein Problem mit der Ladezeit. –

+0

Oops sorry dann. Für mich ist XUL so eng mit Firefox verbunden, dass ich manchmal vergesse, dass du es selbstständig benutzen kannst;) Nevermind! –

Antwort

0

Gelöst es mit einer variablen „window.scriptsLoaded“ und eine Schleife auf meiner Klasse Konstruktor, warten ..

-update

auch, es nicht mit while(!window.scriptsLoaded) funktionierte, musste ich Verwenden Sie:

function loadScripts() { 
    if (!window.scriptsLoaded) 
     setTimeout(loadScripts, 1) 
    else 
     loaded(); 
} 

so die window.scriptsLoaded könnte jedes Mal aktualisiert werden, wenn ich es überprüfe. Ich verstehe nicht wirklich warum.

-update

Eigentlich verwenden „onload“ zeigte sich eine die bessere Lösung ..

Verwandte Themen