Felix Riesterer: Eventhandler

Beitrag lesen

Lieber Ernesto,

es stimmt, dass in einem solchen Falle "onclick" zuerst ausgeführt wird - im Grunde genommen sogar zweimal, denn ein Doppelclick ist ja eben ein _doppelter_ Klick! Anscheinend sind aber die Browser so intelligent, dass sie einen Doppelklick nicht als doppelten Klick im onclick-Event feuern, sondern sich mit dem ersten der beiden Klicks begnügen.

Wenn Du zwei Funktionen hast, die sich gegenseitig in die Quere kommen, dann empfehle ich Dir mit window.setTimeout() zu arbeiten, sodass die eine Funktion "abwartet", bis klar ist, dass es sich eben nicht um einen Doppelklick gehandelt hat.

ungetestetes Beispiel:

var KlickMeister {  
    dblclicked : false, // hier steht später eventuell true  
  
    fct1 : function (v) {  
        // Doppelklick!  
        KlickMeister.dblclicked = true; // Doppelklick eintragen!  
  
        // ab hier normaler Funktionscode...  
        alert("Doppelklick!");  
  
        // Doppelklick austragen, damit einfache Klicks wieder möglich sind!  
        window.setTimeout(function () {  
            KlickMeister.dblcklicked = false;  
        }, 120);  
  
        return true;  
    },  
  
    fct2 : function (v) {  
        // Einfacher Klick (oder doch Doppelklick?)  
        window.setTimeout(function () {  
            if (KlickMeister.dblclicked) {  
                return false; // doch ein Doppelklick gewesen!  
            }  
  
            // Ab hier normaler Funktionscode für einfachen Klick...  
            alert("einfacher Klick")!  
  
            return true;  
        }, 120); // 120 Millisekunden genug für Doppelklick?  
    }  
};

<img src="..." alt="..." ondblclick="KlickMeister.fct1();" onclick="KlickMeister.fct2();" />

Liebe Grüße aus Ellwangen,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)