Avatar billede tandpine Nybegynder
14. oktober 2001 - 10:21 Der er 7 kommentarer og
1 løsning

OnDblClick

Hejsa

Jeg er igang med et \"større\" projekt.
Jeg skal i et <a> tag kunne kende forskel på om det er et enkelt onMouseDown eller det er et onDblClick.
det er som om onMouseDown ALTID fanger den først, og det duer ligesom ikke. Nogen der har et forslag til hvordan det løses ????

//Tanden
Avatar billede Tony Juniormester
14. oktober 2001 - 10:33 #1
Dit script vil altid udføre din onMouseDown inden onDblClick, så har du ikke mulighed for at give bruger to valg ? F.eks. et tekst-link og et billed-link a la ... \'Hvis du ønsker at gå til Ost så klik på musen ellers klik her\'. En anden mulighed kunne være at bruge onMouseOver til at vise et layer med to valgmuligheder i hvoraf bruger så kan vælge.
Avatar billede jakoba Nybegynder
14. oktober 2001 - 10:42 #2
Du kan evt sætte lidt limeout på din onmousedown handeler, og så annumere hvis det viser sig at være et klik eller dobbelklik.

i head:
<script language=\'javascript\'>

var downHandle;
function onDown( ) {
    // din mousedown action
}

function onDbl( ) {
    clearTimeout( downHandle );
    // din dblclick action
}

</script>

i dit aktive html-element fx:

<a href=\"...\"
    onmousedown=\"setTimeout(\'onDown()\', 200)\"
    ondblclick=\"ondbl( )\">...</a>

mvh JakobA
Avatar billede jakoba Nybegynder
14. oktober 2001 - 10:44 #3
Ups. limeout -> timeout,  annumere -> anullere

Hvis du har mulighed for at følge tony\'s råd er det det bedste, mit gør mousdown handlingen lidt træg.
Avatar billede Tony Juniormester
14. oktober 2001 - 10:49 #4
... som JakobA viser, er der evne og vilje er der også vej :)
Avatar billede jakoba Nybegynder
14. oktober 2001 - 10:54 #5
Mangler bare en fejlretter :)
    onmousedown=\"downHandle=setTimeout(\'onDown()\', 200)\"
Avatar billede tandpine Nybegynder
14. oktober 2001 - 10:57 #6
jacoba: jeg prøver med din løsning, men hvad nu når der til onDown skal sendes en tekstparameter med ??
f.eks:
onmousedown=\"setTimeout(\'onDown(\'ICON_1\')\', 200)\"
det kan man jo ikke.. hvad gør man så??
Avatar billede jakoba Nybegynder
14. oktober 2001 - 11:05 #7
Næe, så må du flytte timeoutet op i funktionen:

i head:
<script language=\'javascript\'>

var downHandle;
var downParam1;
var downParam2;
function realDown( ) {
    // din mousedown action der bruger downParam1 og downParam2
}
function onDown( param1, param2 ) {
    downParam1 = param1;
    downParam2 = param2;
    downHandle = setTimeout( \"realDown()\", 200 );
}

function onDbl( ) {
    clearTimeout( downHandle );
    // din dblclick action
}

</script>

i dit aktive html-element fx:

<a href=\"...\"
    onmousedown=\"onDown( \'Min Afrikanske Farm\', this )\"
    ondblclick=\"ondbl( )\">...</a>

mvh JakobA
Avatar billede tandpine Nybegynder
14. oktober 2001 - 11:28 #8
Så lykkedes det JakobA... jeg takker mange gange..
jeg gjorde det godt nok på en lidt anden måde, men stadig med timeout\'s så det er jo bare GREAT :)
så skal jeg bare lige ha justeret timeouten så den passer helt perfekt til mit formål :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester