Ich möchte die Strg - R oder F5 Verknüpfung im Browser erfassen, um zu verhindern, dass sie eine Aktualisierung des Browsers durchführt, sondern stattdessen eine benutzerdefinierte Aktualisierung
Ich konnte Strg - R auf Safari und FF mit
erfassen %Vor%Aber das funktioniert nicht auf IE. Gibt es eine Möglichkeit, dies auf IE zu tun?
Update: Für Leute, die fragen, warum ich das überhaupt mache: Ich wollte nur eine benutzerdefinierte App-Aktualisierung durchführen, aber ich wollte vermeiden, dass ich eine "Refresh" -Schaltfläche habe, weil ich davon abraten möchte, die Aktualisierung zu verwenden (Wir haben eine ganzseitige Flex-App). Am Ende wechselten wir zu F8, weil F5 einfach zu schwer war, um an allen Browsern zu arbeiten.
Öffnen Sie JavaScript
Bei bestimmten Tasten (F1, F4) müssen Sie ein neues Browserfenster ohne die Adressleiste öffnen.
Beispiel
Öffnen Sie ein neues Fenster ohne Verzierungen:
%Vor%JavaScript, um die Bibliothek zu verwenden:
%Vor% Innerhalb webpage.html
:
Es gibt keine solide Möglichkeit, die Funktionstasten in Browsern zu überschreiben.
Internet Explorer hat bestimmte Tasten, die nicht überschrieben werden können, und bestimmte Tasten, die - selbst beim Überschreiben - immer noch Standardverhalten ausführen - wie die Taste F11, die in den Vollbildmodus wechselt, und die F1-Taste, die ein Hilfefenster öffnet.
In Chrome können Sie keine Schlüsselereignisse verwenden.
FireFox ist der harmloseste, aber immer noch skizzenhafte Internet Explorer. Es gibt immer noch einige Tasten und Standardverhalten, die Sie nicht überschreiben können.
Und schließlich ... Opera .. Das ist ungefähr so schwierig wie der Internet Explorer.
Und das Standardverhalten unterscheidet sich von Version zu Version. Es ist wie in ein Minenfeld zu gehen .. Mit verbundenen Augen .. :)
Der Versuch, CTRL + R F5 zu übersteuern, riecht nach schlechtem Design.
Welches Problem versuchen Sie zu lösen?
Da das "Wie" bereits behandelt wurde, dachte ich, dass Sie sich der Grenzen der Verwendung von Javascript für so etwas bewusst sein müssen.
Wenn Sie zum Beispiel in Safari (und möglicherweise anderen) zum Eingabefeld Suchen des Browsers gelangen, können Sie immer noch Tastaturkurzbefehle ausgeben, aber das liegt außerhalb des Umfangs Ihres Javascript. Wenn der Benutzer das tut, wird jeder Schlüssel-Ereignis-Essen-Code, den Sie geschrieben haben, nicht aufgerufen, und der Tastendruck wird gut durchgehen.
Die Lösungen, die Sie finden, mögen also funktionieren, werden aber fast immer irgendwie durch einfache Browserfunktionen vereitelt.
YUI hat einen Key-Handler, der über alle Browser funktioniert
Ich denke, das Problem mit dem obigen Code ist, dass IE das Ereignis nicht an die Funktion weitergibt. Es wird in eine globale Variable namens window.event eingefügt.
Ich schlage vor, den YUI-Key-Listener zu versuchen, es wird eine ziemlich saubere Lösung sein und Sie müssen nicht die ganze Bibliothek benutzen, nur die Teile, die Sie brauchen.
Haben Sie versucht keyCode == 82
, nicht 114
? Tastencodes sind nicht identisch mit ASCII / charCodes, also gibt es keine obere / Kleinschreibung.
Das hat bei mir funktioniert (naja, technisch habe ich es mit einem JQuery-Keydown-Handler benutzt, nicht document.onkeypress
):
Und für all jene, die "schlechtes Design" weinen - ich baue einen Terminal-Emulator und möchte, dass CTRL-R mit der Bash-CTRL-R übereinstimmt, um den Verlauf zu durchsuchen, nicht die Seite zu aktualisieren. Es gibt immer Anwendungsfälle.
Ich habe es geschafft, ein ähnliches Problem nur mit JavaScript core zu lösen. Der Code besteht aus zwei Teilen, der Definition und der Implementierung. Die Teile können jedoch zusammengeführt werden, wenn sie benötigt werden.
Definition
%Vor%Implementierung
%Vor%Fügen Sie einfach den keyCode hinzu, den Sie abfangen und den Rückruf entsprechend bearbeiten möchten
Tags und Links javascript internet-explorer