Gibt es eine Möglichkeit, Ctrl-R oder F5 auf IE mit Javascript zu erfassen / zu überschreiben?

8

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.

    
airportyh 09.09.2009, 15:53
quelle

8 Antworten

8

Ö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 :

%Vor%     
Dave Jarvis 09.09.2009, 15:57
quelle
4

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?

    
roosteronacid 09.09.2009 16:22
quelle
2

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.

    
Luke Rinard 09.09.2009 17:17
quelle
1

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.

    
Zoidberg 09.09.2009 15:57
quelle
1

Ich belebe document.body.onbeforeunload ist der Weg. Sie können sogar verhindern, dass Benutzer die Seite damit verlassen. Nur nicht sicher, wie man erkennt, ob es eine Aktualisierung ist oder ob er tatsächlich irgendwo anders surft (document.location vielleicht?)

    
Havenard 09.09.2009 16:10
quelle
0

für f11 im IE Fügen Sie für das body (onkeydown='return checkKey(event)' )

Checkkey on onkeydown-Ereignis hinzu %Vor%     
max 04.10.2010 15:59
quelle
0

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 ):

%Vor%

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.

    
Jeff Ward 26.03.2014 15:16
quelle
-1

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

    
Wheelchair Geek 16.12.2015 17:23
quelle

Tags und Links