• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Leertaste im Alert-Fenster abfangen

Yogilein

Member
Hallo,

bei einigen meiner Spiele wird auch mit der Leertaste gesteuert. Das funktioniert soweit und der Bildschirm scrollt nicht nach unten.

Erscheint jetzt aber ein Alert-Fenster mit z.B. dem Hinweis "Spielende", verschwindet dieses sofort wieder, wenn man direkt zuvor die Leertaste gedrückt hat.

Das hier hilft nicht:

Code:
CancelBubble=true;
return false;

Hat jemand eine Idee, was zu tun ist, damit die Leertaste auch im Alert-Fenster abgefangen werden kann.

Da es mir erst jetzt auffällt, bin ich geneigt zu sagen, dass es früher (2013) nicht so war. Es wäre mir aufgefallen, wenn der Hinweis "Spielende" nicht gekommen wäre.
 
ist das in allen Browsern? spontan fällt mir dazu die Systemsteuerung der Maus mit dieser Option "Focus immer auf Schaltfläche" oder wie das da heißt ein.
 
Ich meine den ganz normalen Alert-Befehl, kein jquery oder ähnliches.

Bei allen Browsern kann ich mit der Leertaste ein Alert-Fenster schließen, obwohl ich mit Javascript die Leertaste abfange.

Brutal ist es bei Opera und Chrome. Ich drücke die Leertaste vor dem Alert-Befehl, verhindere das Aufsteigen des Events und trotzdem verschwindet sofort das anschließend aufgerufene Alert-Fenster. Teilweise sieht man es noch kurz aufblitzen.
 
du willst also quasi Tasten in der ureigenen Browser Alert Box abfangen damit die Space Taste die Alert Box nicht weg klicken kann?
 
Ja, das will ich.

Mir würde aber schon genügen wenn das Event vor dem Aufruf der Alert-Box die Alert-Box nicht mehr beenden würde (Chrome und Opera). Das verstehe ich nämlich ganz und gar nicht. Ich werde daher mal versuchen, die Alert-Box etwas zeitverzögert aufzurufen.

- - - Aktualisiert - - -

So, jetzt rufe ich die Alert-Box mit einer Verzögerung von 1/4 Sekunde auf und sie verschwindet nicht mehr.

Ich fasse es nicht, denn so sieht mein Code aus:

Code:
innen3:function TasteGedrueckt(Ereignis){
if(!Ereignis)
Ereignis=window.event;
if(Ereignis.which){
Tastencode=Ereignis.which;}
else if(Ereignis.keyCode){
Tastencode=Ereignis.keyCode;}
if(Tastencode==32){
module.innen9();
CancelBubble=true;event.returnValue=false;}
},

In der Funktion innen9 frage ich erst noch ab, ob das Spiel überhaupt zuende ist, aktualisiere die Anzeigen und rufe dann erst Alert auf. Und das Ganze scheint schneller abgearbeitet zu werden als CancelBubble, zumindest in Chrome und Opera???

Ok, damit kann ich jetzt leben oder gibt es noch bessere Lösungen?
 
Mir würde aber schon genügen wenn das Event vor dem Aufruf der Alert-Box die Alert-Box nicht mehr beenden würde (Chrome und Opera).
das event, bzw eine aktion im handler kann das alertfenster nicht beenden

auch solltest du dir bewusst sein, dass alert reentranten code erfordert, was es in js eigentlich nicht geben darf
 
mir stellt sich da jetzt die Frage, warum du überhaupt ein alert() benutzt, wenn es deinem Code in die Quere kommt ...
 
mir stellt sich da jetzt die Frage, warum du überhaupt ein alert() benutzt, wenn es deinem Code in die Quere kommt ...

Weil es halt ein älteres Spiel ist und damals hat's funktioniert. In meinem neuesten Spiel benutze ich weder Alert-, Confirm- noch Popup-Fenster, da diese in den verschiedenen Browsern immer "hässlicher" dargestellt werden. Gerade das Alert-Fenster: denn ganz in Groß steht da erstens "Unter http://www.yogispiele.de wird Folgendes angezeigt:" Dann kommt wesentlich kleiner mein Hinweis und unten dran dann:"Diese Seite am Erstellen zusätzlicher Dialog hindern". Das sieht übel aus, wenn z.B. nur der Hinweis "Spielende" kommt. Auch die Popups machen Probs: Sie sind mittlerweile in der Größe veränderbar (obwohl ich dies ausschließe), werden nicht zwingend als Popup geöffnet, sondern je nach Voreinstellung auch in einem neuen Tab, haben 2 zusätzliche Kopfzeilen usw. Mit den Popups rufe ich meine kleine Highscore-Tabelle auf und gerade dies hat mir einiges an Kopfzerbrechen bereitet, denn ich darf mein Spiel ja nicht verlassen, um das PHP-File aufzurufen, da dann alle Spielstände weg sind. Mittlerweile habe ich das jetzt mit Ajax gelöst.
 
Soweit ich weiß, kommt das "wegklicken" des Dialogs per Leertaste vom Betriebssystem. Da kann man dann mit JS nicht intervenieren.
 
Zurück
Oben