Turmfalke: Mouseover erst nach 2 Sekunden (kein Timeout!)

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

  1. 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)

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. 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...

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
  2. [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

    --
    Hard to believe that anyone would use Prototype.js at this
    point. It was a bad idea in 2006 and it hasn't gotten any better with age. (David Mark)
    Foren-Stylesheet Site Selfzeugs
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
  3. 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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
  4. 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

    1. 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.