Mouseover erst nach 2 Sekunden (kein Timeout!)
Turmfalke
- javascript
Hi liebes Forum,
gibt es eine Möglichkeit den Mouseovereffekt erst auszuführen, wenn der Benutzer bereits 2 Sekunden auf dem Navigationselement (hier: <ul> <li> ...)
verweilt.
Ich hatte an einen Timer oder soetwas gedacht...
Aber kein Timeout! Weil wenn der Benutzer einfach mit dem Mauszeiger an der Navi vom oben bis unten runterfährt, würde er ja bei jedem Element nur 2 sekunden warten und dann ausführen...
Das wäre nur Chaos!
Die Navigation habe ich mit JQuery erstellt. Wär klasse, wenn es vlt doch ein Befehl gäbe, obwohl ich mir sicher bin, dass ich die Documentation komplett durchgesucht hab.
Gedacht hatte ich an:
document.getElementById(this).mouseover{
var i = 0;
timer.activate; //im sekundentakt , timer.activate nur ne Idee!
while(i<=2){
i++;
}
if(i == 2) //nach 2 Sekunden dann ausführen
{
//einblenden...
}
Ist klarerweise nur pseudocode, damit ihr wisst, was ich meine. Wenn der Benutzer über ein anderes Element fährt, soll die Ausführung des Codes an alter Stelle (also der Timer) abgebrochen werden.
Jetzt meine Frage:
Ich ahne es zwar, aber ist so ein Vorhaben überhaupt technisch möglich?
Wenn ja, bitte ein paar Stichwörter die mir helfen. Andernfalls bitte eine Bestätigung zu meiner Befürchtung, damit ich die Zeit nicht in unnützes, weiteres Suchen verschwende ;)
lg. Turmfalke
Hi!
Timeout. :)
Setz das Timeout und beim Verlassen des Elements eine Bedingung, die beim Timeout dafuer sorgt, das nichts passiert. NAtuerlich musst Du beim Mouseover die Bedingung clearen. (Verpass jedem Element eine Eigenschaft wie showhover = true/false)
Setz das Timeout und beim Verlassen des Elements eine Bedingung, die beim Timeout dafuer sorgt, das nichts passiert.
Aus irgendeinem merkwuerdigen Grund, merk ich mir nie, dass es nicht nur clearInterval() gibt...
[latex]Mae govannen![/latex]
gibt es eine Möglichkeit den Mouseovereffekt erst auszuführen, wenn der Benutzer bereits 2 Sekunden auf dem Navigationselement (hier: <ul> <li> ...)
verweilt.
Ich hatte an einen Timer oder soetwas gedacht...
Aber kein Timeout!
Versuch es mit einem Timeout.
Starte den Timeout, sobald das Element gehovert wird (in JS: mouseover-Event) und breche den Timeout wieder ab, wenn das Element wieder verlassen wird. Somit wird die zugewiesene Funktion nur dann aufgerufen, wenn die volle Timeout-Zeit ablaufen konnte.
BTW: Verzögerungen bei Navigationspunkten sind beim erstem Mal vielleicht(!) noch ganz nett, aber spätestens beim 5. Mal nerven sie nur noch. BTDT.
Cü,
Kai
Hi,
gibt es eine Möglichkeit den Mouseovereffekt erst auszuführen, wenn der Benutzer bereits 2 Sekunden auf dem Navigationselement (hier: <ul> <li> ...)
verweilt.
Ich hatte an einen Timer oder soetwas gedacht...
Aber kein Timeout!
Was denn sonst?
Wenn du per JavaScript etwas zeitgesteuert ausführen willst, dann *willst* du setTimeout oder setInterval benutzen.
Weil wenn der Benutzer einfach mit dem Mauszeiger an der Navi vom oben bis unten runterfährt, würde er ja bei jedem Element nur 2 sekunden warten und dann ausführen...
Das wäre nur Chaos!
Timeouts/Intervalle lassen sich auch wieder clearen.
Die Navigation habe ich mit JQuery erstellt.
Das bedeutet hoffentlich, dass du lediglich optionale Zusatzeffekte über jQuery realisiert hast, und die Navigation an sich aber auch ohne JS nutzbar ist.
MfG ChrisB
Wow das ging schnell :D
ok, erstmal vielen Dank für die Tipps. Die Navigation ist logischerweise rein HTML ... nur die Unterpunkte unsichtbar. Die werden mit JQuery slideDown eben nur sichtbar gemacht.
Zu setInterval werd ich mir nochmal was durchlesen. Aber ich hab schon so eine gewissen Vorstellung, wie ich mir das zusammen friemel ;)
Wusste nicht, dass man den Timeout clearen kann. Vielen Dank dafür :)
Die Lösung zu meiner Navigation (also Quellcode) werde ich posten, wenn ich fertig bin. Vlt hilft sie jemandem nochmal.
lg. Turmfalke
Wusste nicht, dass man den Timeout clearen kann. Vielen Dank dafür :)
Hätte man aber Wissen könne, wenn man mal bei selfhtml nachschaut. Steht nicht weit weg von der Erklärung zu setTimeout: http://de.selfhtml.org/javascript/objekte/window.htm#clear_timeout
Struppi.