5 Stimmen

Opera preventDefault() bei Tastendruck-Ereignis

Ich versuche, einige Tastenkombinationen in meine Webapp einzubinden, und ich habe Schwierigkeiten mit Opera. 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;
  }
}

In Firefox und Chrome funktioniert es einwandfrei, aber Opera öffnet immer noch eine neue Registerkarte. Dasselbe passiert mit return false; .

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

8voto

Marcel Korpel Punkte 21267

Oper unterstützt nicht preventDefault en keydown nur am keypress .

Wie Sie sehen können in dieses Beispiel sollten Sie eine separate keypress Handler für Opera (angepasst an Ihre Situation):

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;
    }
};

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X