Frage

Ich habe eine Web-Seite, wo Ich mag würde Strg + N zu einem anderen Verhalten neu zuordnen. Ich folgte YUI Beispiel des Registers Key Hörer und meine Funktion wird aufgerufen, aber Firefox schafft noch ein neues Browserfenster. Die Dinge scheinen auf IE7 zu funktionieren. Wie kann ich nicht angezeigt werden, um das neue Fenster stoppen?

Beispiel:

var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 },
             {fn:function(event) {
                     YAHOO.util.Event.stopEvent(event); // Doesn't help
                     alert('Click');}});
kl2.enable();

Es ist möglich, das Standardverhalten zu entfernen. Google Text & Tabellen überschreibt Strg + S Ihr Dokument speichern statt Erziehung Firefox Dialog speichern. Ich habe versucht, das obige Beispiel mit Strg + S aber Firefox speichert Dialog erscheint nach wie vor hoch. Da Google die Speichern-Dialog aus der Tür Ich bin sicher, es gibt einen Weg, die meist Standard-Tastaturkürzel stoppen zu verhindern.

War es hilfreich?

Lösung

Der Trick ist, die 'fn' Funktion Gleichgewicht geraten ist.

Experimentell kann man sehen, dass der Funktionstyp für fn zwei Parameter übernimmt. Der erste param enthält tatsächlich die Art des Ereignisses. Die zweite enthält ... und dies ist screwy:. Ein Array mit dem Codepunkt bei Index 0 und das tatsächliche Ereignisobjekt bei Index 1

So Ihr Code um ein wenig zu ändern, es sollte wie folgt aussehen:

function callback(type, args)
{
    var event = args[1]; // the actual event object
    alert('Click');

    // like stopEvent, but the event still propogates to other YUI handlers
    YAHOO.util.Event.preventDefault(event);
}
var kl2 = new YAHOO.util.KeyListener(document, { ctrl:true, keys:78 }, {fn:callback});
kl2.enable();

Auch für die Liebe von Lisp, verwenden Sie keine rohen Codepunkte in Ihrem Code. Verwendung ‚N'.charCodeAt (0) anstelle von "78". Oder es einpacken als Funktion

function ord(char)
{
    return char.charCodeAt(0);
}

Andere Tipps

Ich kann nur raten hier, aber ich glaube nicht, es getan werden kann.

Wenn es möglich ist, sollte es auf jeden Fall nicht sein. Generisches Tastaturkürzel sind etwas, das Sie sollten nicht mit Zohan an. Was kommt als nächstes? Haken Sie das Fenster schließen, um ein neues Fenster zu öffnen ...

YUI Ereignis Mit util, könnten Sie versuchen, und verwenden Sie die stopEvent Methode:

Da jedoch die meisten Benutzer auf diese Drücken von Tasten verwendet werden, eine bestimmte Sache im Browser (neues Fenster in Ihrem Beispiel) zu machen, ich Auseinandersetzungen immer vermeiden, was im Endeffekt bedeutet, dass ich nicht eine der meta oder Steuertasten verwenden.

ich einfach Buchstaben verwenden, auf ihre eigenen, was in Ordnung ist, bis Sie Texteingabefelder haben, so dass diese kleiner Rat möglicherweise weniger nützlich für Sie.

Obwohl Verknüpfungen überschreiben Standardbrowser nicht trivial ist, in einigen Fällen ist es wert, dies zu tun, da es ein professionelles Aussehen der Anwendung gibt. Werfen Sie einen Blick auf dieses Skript:

http://www.openjs.com/scripts/events /keyboard_shortcuts/index.php#disable_in_input

Es stellt sich heraus gut für mich zu arbeiten ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top