[JS] Na delay controleren of muis nog op object is

Pagina: 1
Acties:

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 28-04 21:25

Wacky

Dr. Lektroluv \o/

Topicstarter
Ik heb een website waarbij het menu opgedeelt is in (grafische) tabbladen. Als je over het tabblad heengaat verschijnen de bijbehorende menu items. Het probleem is dat de tabbladen direct reageren, waardoor navigeren door het menu af en toe lastig is. Als je namelijk iets te hoog zit met je muis (op de tabbladen dus) dan verschijnen direct de bijbehorende menu items.

Wat ik heb geprobeerd is dat zodra je met je muis over het tabblad gaat er bijv. 300 ms gewacht wordt voordat de menu items verschijnen. Dit is echter geen oplossing omdat het veranderen van de menu items nu gewoon 300 ms later plaatsvindt :{ Ik heb wel al een oplossing bedacht, maar weet niet hoe ik dit uit moet voeren.

Wat ik wil doen:

1. Muis gaat over tabblad
2. 300 ms delay
3. Controleren of de muis nog steeds op het tabblad (element) is; zo ja: menu items weergeven.

Echter, ik weet niet hoe ik dit aan moet pakken. Een andere oplossing die ik had bedacht is het stoppen van het uitvoeren van de functie bij een onMouseOut. Dit kreeg ik echter ook niet voor elkaar.

Even concreet:
1. Weet er iemand hoe je kan controleren of de muis nog steeds op het tabblad (element) is?
2. Of; Weet er iemand hoe je het uitvoeren van een functie kan stoppen bij een onMouseOut?

Mocht het verhaal niet helemaal duidelijk zijn kan ik evt. wat code / screenshots plaatsen :)

Nu ook met Flickr account


  • André
  • Registratie: Maart 2002
  • Laatst online: 16:01

André

Analytics dude

Wacky schreef op dinsdag 02 augustus 2005 @ 21:32:
Een andere oplossing die ik had bedacht is het stoppen van het uitvoeren van de functie bij een onMouseOut. Dit kreeg ik echter ook niet voor elkaar.
Even in pseudo code:

code:
1
2
3
onmouseover = function() { tijd = setTimeout("opentab()", 300); }

onmouseout = function() { clearTimeout(tijd); }

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 28-04 21:25

Wacky

Dr. Lektroluv \o/

Topicstarter
Ik ben even met je idee gaan worstelen, maar kom er niet ... krijg javascript errors :{

code:
1
<a href="http://url/" onMouseover="tijd = setTimeout('expandcontent('sc2', this)',300);" onMouseout="clearTimeout(tijd);">Home</a>

De fout wordt gegeven doordat ik in de setTimeout een functie aanroep met parameters:
code:
1
expandcontent('sc2', this)

Ik heb al geprobeerd dit op te lossen door van alles en nog wat te escapen, maar zonder succes.

De foutmelding die ik krijg van Firefox:
code:
1
missing ) after argument list

Waarbij de foutmelding zich richt op het gedeelte "sc2" bij het aanroepen van de functie.

Iemand die me hiermee kan helpen? :)

Nu ook met Flickr account


  • André
  • Registratie: Maart 2002
  • Laatst online: 16:01

André

Analytics dude

Het simpelste is gewoon om in de onmouseover een functie aan te roepen waar je de setTimeout in zet, dan zit je ook niet met het escapen.

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 28-04 21:25

Wacky

Dr. Lektroluv \o/

Topicstarter
André schreef op woensdag 03 augustus 2005 @ 13:10:
Het simpelste is gewoon om in de onmouseover een functie aan te roepen waar je de setTimeout in zet, dan zit je ook niet met het escapen.
Je bedoelt dus dat de setTimeout code in de expandcontent functie komt te staan :?

Nu ook met Flickr account


  • André
  • Registratie: Maart 2002
  • Laatst online: 16:01

André

Analytics dude

Ik bedoel zoiets:

code:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
  var tijd;

  function doe(obj)
  {
    tijd = setTimeout("expandcontent('sc2', " + obj + ")", 300);
  }
</script>
<a href="http://www.url.nl/" onmouseover="doe(this)" onmouseout="clearTimeout(tijd);">Home</a>

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 28-04 21:25

Wacky

Dr. Lektroluv \o/

Topicstarter
André schreef op woensdag 03 augustus 2005 @ 21:47:
Ik bedoel zoiets:

code:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
  var tijd;

  function doe(obj)
  {
    tijd = setTimeout("expandcontent('sc2', " + obj + ")", 300);
  }
</script>
<a href="http://www.url.nl/" onmouseover="doe(this)" onmouseout="clearTimeout(tijd);">Home</a>
Zo, even druk gehad v/d week .. maar het werkt!

Onder het mom van beter laat dan nooit, bedankt! :)

Nu ook met Flickr account

Pagina: 1