Frage

Ich versuche, ein paar Schlüsselbindungen in meine WebApp einzubetten, und ich habe schwere Zeiten in die Oper. Ich habe diesen Code:

window.onkeydown = function(e){
  var key = e.keyCode ? e.keyCode : e.charCode ? e.charCode : false;
  if (e.ctrlKey && key === 84) {
    alert("foo");
    e.preventDefault();
    // return false;
  }
}

Es funktioniert wie ein Zauber in Firefox und Chrome, aber die Oper öffnet immer noch einen neuen Tab. Gleiches passiert mit return false;.

Meine Information: Opera/9.80 (X11; Linux i686; U; en) Presto/2.7.62 Version/11.00

War es hilfreich?

Lösung

Oper unterstützt nicht preventDefault an keydown, nur an keypress.

Wie Sie sehen können Dieses Beispiel, Sie sollten eine separate Bindung binden keypress Handler für die Oper (an Ihre Situation angepasst):

var cancelKeypress = false;

document.onkeydown = function(evt) {
    evt = evt || window.event;
    cancelKeypress = (evt.ctrlKey && evt.keyCode == 84);
    if (cancelKeypress) {
        return false;
    }
};

/* For Opera */
document.onkeypress = function(evt) {
    if (cancelKeypress) {
        return false;
    }
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top