uwe: verzögerter Funktionsaufruf (Timer)

hallo,

folgendes Problem:
Ich möchte eine JavaScript funktion aufrufen, nachdem der benutzer die maus über einem element eine bestimmte zeit nicht mehr bewegt hat.

quasi wie ein toolTip. Nach einer Sekunde erscheint ein alternativer text in einem kleinen rechteck. Als rechteck will ich ein div verwenden und per absoluter position am mauszeiger positionieren.

wie erreiche ich aber das verzögerte auslösen der funktion?

das funktionsgerüßt sieht folgendermaßen aus:

function MouseMoveHandling()
{
  x = mauspos;
  y = mauspos;

ZeigePositionInFormularfeldernAn();

ShowToolTip(x, y);
}

function ShowToolTip(x, y)
{
  element.top ...
  element.left ...

element.innerText = ...
}

dabei wird aber bei jeder mausbewegung sofort der tooltip angezeigt. Ich möchte ihn aber gerne verzögert einblenden.

ansatz:

  • mausbewegung
  • speichere koordinaten
  • warte eine sekunde
  • vergleiche aktuelle position mit der gespeicherten
    -  funktionsaufruf
    -  oder bei ungleich - speichere aktuelle koordinaten

mit bereitet das eine sekunde warten probleme.

  1. window.setTimeout("ShowToolTip(x, y);", 1000)

  2. Hi uwe,

    hilft Dir das:
    http://www.faqts.com/knowledge_base/view.phtml/aid/1602
    ?
    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:) rl:( br:> ch:~ n4:& ie:% mo:) va:| de:< zu:| fl:( ss:) ls:[
  3. hm,

    ich sehe das jetzt mal so:
    nach einer mausbewegung wird in der funktion MouseMoveHandling() der timer (eine sekunde) auf die funktion ShowToolTip() ausgelöst.

    da wird ja aber bei jeder mausbewegung ein neuer timer hinzugefügt.
    das würde bedeuten, das die tooltips nicht direkt bei mausbewegung sonder eine sekunde verzögert erscheinen. ich will ja aber nicht an jeder gemeldeten mauspositionsveränderung ein tooltip anzeigen, sondern nur bei positionen, wo länger als eine sekunde verweilt wurde.

  4. aha,

    es gibt ja timeout und intervall.

    hab das eben mal nicht gewusst und verwechselt.

    danke :)