Gewusst wie: laden Sie die javascript-Funktion im Fenster.onload-nach einiger Verzögerung
Ich habe paar Funktionen, die ausgelöst werden soll, nachdem es zu einigen Verzögerungen im onload-Ereignis. Es funktioniert gut in chrome aber nicht in Firefox.
function foo() {
//javascript code
}
window.onload = setTimeout(foo, delay);
function bar() {
//javascript code
}
window.onload = setTimeout(bar, delay);
Wenn ich entfernen Sie die Verzögerung, 'bar' wird aufgerufen in Firefox und 'foo' und 'bar' get aufgerufen, in Chrom. Was könnte hier das Problem?
InformationsquelleAutor Achaius | 2011-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin überrascht, dass beide Funktionen auch aufgerufen, in jedem browser. Aber haben Sie vielleicht mehr Glück mit so etwas wie:
Edit: Nevermind, ich sehen, warum die beiden timeouts führen. Wenn Sie etwas tun, wie:
window.onload = setTimeout(bar, delay);
...Sie sind nicht eigentlich die Einstellung
window.onload
für die Ausführung Ihrer Funktion nach eine Verzögerung. Anstatt diese sofort aufrufensetTimeout()
planen Sie Ihre Funktion nennen, und weisen das Ergebnis (ein handle für das geplante Funktions-Aufruf)window.onload
. Dies ist nicht korrekt, und wird wahrscheinlich dazu führen, dass eine runtime-Fehler in einigen Browsern, wenn Sie versuchen, aufrufenwindow.onload
als eine Funktion.Was Sie wollen zu tun, sondern ist eine Funktion zuzuordnen
window.onload
wie:InformationsquelleAutor aroth
Könnten Sie jQuery mit sth so:
oder
jQuery automatisch fügt Funktionen zu stapeln, und Sie laufen alle, sobald ein Ereignis ausgelöst wird.
Wenn Sie wollen, tun es nur mit JS, können Sie die array-Funktionen auslösen:
Hoffe, es hilft.
var arr = [];
undarr.push(a); arr.push(b);
werde es perfekt sein 🙂InformationsquelleAutor Karol
Versuchen Sie das einwickeln der timeout-Funktion:
nicht sicher, was du meinst:
window.onload = [somefunction]
bedeutet: startsomefunction
nachdem das Dokument geladen hatte. Danach können Sie Funktionen verwenden, bei Klick auf radio-buttons etc. Wenn Sie wollen, dass Sie auslösen, ein Neuladen der Seite mit einem bestimmtendelay
haben, können Sie versuchen, einen parameter in der html (thisorthat.html?delay=10
). Suche ALSO für die Möglichkeit, Parameter zu verwenden, viele Antworten gefunden werden.InformationsquelleAutor KooiInc
Ich sehen kann zwei Basis-Fehler in Ihrem code. Vor allem, wenn Sie wollen, eine Funktion als argument, die Sie schreiben müssen der name der Funktion, ohne Klammern; wenn Sie fügen Sie die Klammern der Funktion werden ausgeführt, dann rechts. Ein Beispiel:
Zweitens, wenn Sie einen Wert zuweisen, die
.onload
Attribut mit der=
Betreiber werden Sie überschreiben den vorherigen Wert, genau wiea = 3
überschreibt den vorherigen Wert vona
.Von dem, was ich fassen, Ihr Hauptproblem in der Lage zu sein hinzufügen eher als ersetzen event-Handler. Wie üblich, gibt es nicht eine universal-API können Sie sicher bedienen-in allen Browsern. Wenn Sie mit einem framework oder die Bibliothek, ist es wahrscheinlich stellt eine cross-browser-Mechanismus. Andernfalls müssen Sie zu finden oder Ihre eigenen schreiben. In der Vergangenheit ich verwendet habe, diese in mehrere Projekte:
... obwohl es nicht aktualisiert wurde, seit 2005 also, ich würde sicherstellen, dass es ordnungsgemäß funktioniert in aktuellen Browsern.
InformationsquelleAutor Álvaro González