2017-05-30 6 views
0

Also habe ich versucht, bereits die gewählte Antwort auf diese:Wie deaktiviere ich ondblclick in IE8?

How to disable ondblclick in JavaScript?

, aber es funktioniert nicht, auf mein Ende. Wie üblich, vermute ich, dass es etwas mit IE8 zu tun hat (da viele meiner früheren Probleme mit IE8-Problemen zusammenhingen). Diese

ist, wie meine Schaltfläche aussieht, keyBtnEvent ist eine Funktion, die die Klasse des div ändert:

function keyBtnEvent(key, id, event) { 
 
    //change class of object with id = 'id' 
 
    console.log(event + 'event of keyBtnEvent called'); 
 
}
<div id="2Key" class="key" 
 
    onmouseup="keyBtnEvent('2','2Key','up')" 
 
    onmousedown="keyBtnEvent('2','2Key','down')"> 
 
    <button>2</button> 
 
</div>

Also, wie deaktiviere ich ondblclick in IE8, ohne Verwendung von jQuery ?

+1

Bitte bearbeiten Sie Ihre Frage, um die Funktion 'keyBtnEvent()' anzuzeigen. Basierend auf dem Code, den Sie gezeigt haben, sollte es möglicherweise (wahrscheinlich) "onmouseXYZ =" return keyBtnEvent (...) "' sein (dh, den Wert von der Funktion zurückgeben, vorausgesetzt, es gibt 'false' zurück, wenn Sie abbrechen möchten das Ereignis). – nnnnnn

+0

sagst du, dass ich ein 'ondblclick = "return keyBtnEvent (' 2 ',' 2key ',' dblclick ')'' ?? –

+0

Oh, tut mir leid, ich habe nicht bemerkt, dass deine bestehenden Events nicht "ondblclick" enthalten. Das Attribut 'ondblclick = "return false" 'hinzuzufügen, sollte es tun. (Nicht, dass ich normalerweise Inline-Ereignisattribute empfehle, aber da Sie sie bereits für die anderen Ereignisse verwenden.) – nnnnnn

Antwort

0

Dies ist der richtige IE 8 Weg, es zu tun:

var key = document.getElementById('2Key') 

// Feature detection for DOM Event Standard and IE 8 and less 
if(window.addEventListener){ 
    // W3C DOM Event Standard 
    key.addEventListener("dblclick", function(evt) { 
    evt.preventDefault(); // stop the event 
    evt.stopPropagation(); // don't bubble the event 
    }); 
} else if(window.attachEvent){ 
    // IE 8 or less 
    key.attachEvent("ondblclick", function(evt) { 
    evt = evt || window.event; 
    evt.returnValue = false; // stop the event 
    evt.cancelBubble = true; // don't bubble the event 
    }); 
} 

Außerdem sollten Sie keine Inline-HTML-Ereignis werden mit Attributen (onmouseover, onmouseout, etc.). Here's why. Stattdessen sollten Sie alle Ihre JavaScript-Arbeit in einem dedizierten Skript und verwenden Sie .addEventListener() (oder die obige attachEvent() Methode für IE 8 oder weniger).

+0

das funktioniert nicht für mich ... ich wusste, dass dblclick immer noch nicht deaktiviert ist, weil sich die buttle-klasse bei einem dblclick nicht ändert (wenn mousedown die button-klasse ändert, sondern nur beim ersten click)) –

+0

Ich habe vor Ihrer Bearbeitung kommentiert. also ähm ... ja, lass es mich zuerst ausprobieren. –

+0

Ich bin mir nicht sicher, was Sie meinen, wenn Sie sagen, dass * die Button-Klasse sich bei einem Doppelklick nicht ändert * - das ist der springende Punkt - um das Doppelklick-Event zu deaktivieren. Hier ist eine funktionierende Fiddle mit einer simulierten 'keyBtnEvent' Funktion. https://jsfiddle.net/11Ln4ago/9/ –

Verwandte Themen