Andreas: Doppelklick abfragen ohne Einfachklick

Hallo,

ich möchte in JavaScript wenn man auf ein Bild klickt, abfragen ob es ein Rechtsklick, Linksklick oder Doppelklick ist.

Bei Rechtsklick, Linksklick und Doppelklick soll jeweils etwas anderes passieren.

D.h. ich hab ein Bild.
In dem Bild hab ich das:
ondblclick="javascript: klick();"
onmousedown="javascript: klick();"

In der Funktion klick wird dann abgefragt ob es ein links, rechtsklick oder doppelklick war.
Das mach ich mit event.button.
0=doppel, 1=Links, 2=Rechts

Das Problem ist jetzt aber das wenn ich ein Doppelklick mach, ja eigentlich zuerst ein Einfachklick mach!
Bei einem Doppelklick nimmt er den ersten Klick an geht in die Funktion macht das was er bei einem Einfachklick machen soll und erst dann kommt der Doppelklick an und es wir das aufgeführt was beim Doppelklick passieren soll. Aber er soll ja nur den Doppelklick erkennen.

Ich hoffe ihr könnt ungefähr verstehen was ich meine ;)

Hat jemand dafür eine Lösung, dass das nicht passiert ?

Danke schon mal im Vorraus.

Gruß
Andreas

  1. Hallo

    ondblclick="javascript: klick();"
    onmousedown="javascript: klick();"

    ondblclick="javascript: doppel();"
    onmousedown="javascript: einfach();"

    function tu_was(i) {
      if (i==0) {
         doppelklick_gedoens();
      }
      if (i==1) {
         einfachklick_gedoens();
      }
    }

    function doppel() {
       tu_was(0);
    }

    function einfach() {
       tu_was(1);
    }

    Gruß

    Hans

    1. Hi,

      danke erstmal für die Antwort.

      Aber wenn ich einen Doppelklick mach dann geht er hier auch erstmal in die funktion einfach() und von dort in tu_was(1) und somit hat er auch wieder ein einfachklick.
      Und erst dann geht er in die funktion doppel.

      Oder habe ich etwas nicht ganz verstanden?

      Gruß

      Hallo

      ondblclick="javascript: klick();"
      onmousedown="javascript: klick();"

      ondblclick="javascript: doppel();"
      onmousedown="javascript: einfach();"

      function tu_was(i) {
        if (i==0) {
           doppelklick_gedoens();
        }
        if (i==1) {
           einfachklick_gedoens();
        }
      }

      function doppel() {
         tu_was(0);
      }

      function einfach() {
         tu_was(1);
      }

      Gruß

      Hans

      1. Hi,

        danke erstmal für die Antwort.

        Aber wenn ich einen Doppelklick mach dann geht er hier auch erstmal in die funktion einfach() und von dort in tu_was(1) und somit hat er auch wieder ein einfachklick.
        Und erst dann geht er in die funktion doppel.

        Oder habe ich etwas nicht ganz verstanden?

        Gruß

        Kann mir denn da niemand weiterhelfen ???

        1. hi,

          Kann mir denn da niemand weiterhelfen ???

          Ruhig, Brauner!
          Dieses Forum ist nicht deine persönliche Antwortmaschine, also hör bitte auf zu drängeln - Danke.

          Ich würde vorschlagen, dass du die auf einfachen Klick erfolgende Funktion erst leicht zeitversetzt aufrufst.
          Beim Doppelklick setzt du dir dann ein Flag, dass es ein doppelter war.
          Die verzögert aufgerufene Funktion des einfachen Klicks kann dann dieses Flag abfragen, bevor sie etwas tut.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Ich würde vorschlagen, dass du die auf einfachen Klick erfolgende Funktion erst leicht zeitversetzt aufrufst.
            Beim Doppelklick setzt du dir dann ein Flag, dass es ein doppelter war.
            Die verzögert aufgerufene Funktion des einfachen Klicks kann dann dieses Flag abfragen, bevor sie etwas tut.

            gruß,
            wahsaga

            Das habe ich auch schon ausprobiert, klappt aber auch nicht.
            Trotzdem danke und viel Spaß noch.

            Gruß
            Andreas

            1. Tag Andreas.

              Ich würde vorschlagen, dass du die auf einfachen Klick erfolgende Funktion erst leicht zeitversetzt aufrufst.
              Das habe ich auch schon ausprobiert, klappt aber auch nicht.

              "Klappt nicht" trifft allenfalls auf Drehtüren zu. Ohne konkreten Code und eine aussagekräftige Fehlermeldung kann man dir deshalb nur sagen, dass Javascript eben keine Drehtür ist.

              Siechfred

              1. Tag Andreas.

                Ich würde vorschlagen, dass du die auf einfachen Klick erfolgende Funktion erst leicht zeitversetzt aufrufst.
                Das habe ich auch schon ausprobiert, klappt aber auch nicht.

                "Klappt nicht" trifft allenfalls auf Drehtüren zu. Ohne konkreten Code und eine aussagekräftige Fehlermeldung kann man dir deshalb nur sagen, dass Javascript eben keine Drehtür ist.

                Siechfred

                da ist nichts mit fehler.
                Er nimmt den einfachklick wartet aber der doppelklick kommt nicht.
                Weil der erst kommt wenn der einzelklick abgearbeitet ist. Egal wie lange der Einzelklick wartet!

                1. da ist nichts mit fehler.

                  Und ist da was mit Code? Oder noch besser einem Link?

                  Siechfred

          2. Hallo!

            Ich würde vorschlagen, dass du die auf einfachen Klick erfolgende Funktion erst leicht zeitversetzt aufrufst.
            Beim Doppelklick setzt du dir dann ein Flag, dass es ein doppelter war.

            Die Problemstellung hat mich jetzt interessiert. Desswegen hab ich das mal ausprobiert. Im IE funktionierts wie erwartet. Im Moziall/FF aber nicht. Da wird trotz des clearTimeout die Function click ausgeführt.
            Erklärungen?

              
            <head>  
            <title>test</title>  
            <script type='text/javascript'>  
              
            function dblClick(){  
             window.clearTimeout(clickTimer);  
             alert("dblClick");  
            }  
              
            function click(){  
             alert("click");  
            }  
              
            </script>  
            </head>  
            <body onDblClick="dblClick();" onClick="clickTimer=window.setTimeout('click()', 500);">  
            TEST  
            </body>  
            </html>  
            
            

            mfg
              frafu

            1. hi,

              Die Problemstellung hat mich jetzt interessiert. Desswegen hab ich das mal ausprobiert. Im IE funktionierts wie erwartet. Im Moziall/FF aber nicht. Da wird trotz des clearTimeout die Function click ausgeführt.
              Erklärungen?

              Vielleicht wird deine Variable clickTimer, in der du die Referenz auf den Timeout ablegst, nicht als global betrachtet - und ist daher innerhalb der Funktion dblClick() unbekannt.

              Probiere mal, sie am Scriptanfang als globale Variable zu definieren.
              (Habe leider aktuell keinen Gecko zum Testen zur Hand.)

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Hallo!

                Probiere mal, sie am Scriptanfang als globale Variable zu definieren.
                (Habe leider aktuell keinen Gecko zum Testen zur Hand.)

                Auf die Idee bin ich auch schon gekommen, nützt aber auch nichts.

                mfg
                  frafu