ondoubleclick bei Google Chrome

Templorials

Erfahrenes Mitglied
Hallo,

habe eine Problem mit Google Chrome der sich bei ondblclick komisch verhält:
Es muss nämlich nur der zweite Klick (des Doppelklicks) auf das eigentliche Elemente
getätigt werden. Das heißt wenn ich zuerst daneben klicke und dann schnell einen zweiten
Klick auf das Element mache wird das als Doppelklick auf das Element interpretiert.
Aber eben nur im Chrome bzw Chromium Browser.

Ist das bekannt? Bzw. gibs da ein Workaround dafür? Habe noch nichts dazu gefunden.

Schöne Grüße,
Michael
 
Mhm also ich würde das so lösen wie unten beschrieben , der IE 8 scheint mit dem Event so gut klar zu kommen nur nach einen normalen Klick scheint der mir irgendwie hinterher zu hängen. Also das die Variablen nicht so schnell gespeichert werden wie geplant aus Gründen die ich nun noch nicht nachvollziehen konnte. Aber mit dem normalen dblclick Event kommt ja der IE problemlos klar, da müssen wir es uns nu nicht schwerer als nötig machen.

Im FF und Opera habe ich beides nun ausgetestet und es klappt soweit gut sollte auch im Safari oder Chrome klappen beide habe ich nun nicht zur Hand.

Da gibs nun 3 Möglichkeiten :

a) innerhalb der Zeitspanne von 250ms auf das selbe Element geklickt dann dblclick feuern und timer stoppen.

b) ein anderes Element wurde innerhalb der Zeitspanne geclickt, in dem Falle den Timer resetten und neu starten

oder c) die Zeit ist einfach abgelaufen also reset.

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html

  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
        
    .box:first-child {
        background:#f00;
    }

    .box {
        height:100px;
        width:100px;
        background:#0f0;
        float:left;
    }
  </style>
    <script type="text/javascript">

        var curelement = null;
        var timer = false;

        function checkDblClick(evt){

            function reset(){
                window.clearTimeout(timer);

                timer      = null;
                curelement = null;
            }

            if(timer) {
                
                if(curelement && curelement == evt.target) {
                    reset();
                    dblclickFired(evt);
                } else {
                    reset();
                    timer = window.setTimeout(reset,250);
                }
                
            } else
                timer = window.setTimeout(reset,250);

            curelement = evt.target;
        };

        function dblclickFired(evt){
            var e = evt || window.event;
            alert("Dblclick fired");
        };

        window.onload = function(){

            if(document.addEventListener) {
                document.getElementById('b1').addEventListener("click", checkDblClick, false);
                document.getElementById('b2').addEventListener("click", checkDblClick, false);
            } else {
                document.getElementById('b1').attachEvent("ondblclick", dblclickFired);
                document.getElementById('b2').attachEvent("ondblclick", dblclickFired);
            }
        }

    </script>
  </head>
  <body>

      <div class="box" id="b1"></div>
      <div class="box" id="b2"></div>

  </body>
</html>
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück