Firefox keydown-backspace-Problem
Baue ich eine terminal-emulation und läuft in ein Problem mit der Aufnahme backspace in Firefox. Ich bin in der Lage, nab die ersten backspace und entfernen Sie das Letzte Zeichen auf die Eingabe an der Eingabeaufforderung, aber es wird nicht andauern, und entfernen Sie mehr als ein Zeichen.
Eigentlichen website: http://term.qt.io/
Replikation hier: http://jsfiddle.net/BgtsE/1/
JavaScript-code
function handleKeys(e){
var evt = e || window.event;
var key = evt.charCode || evt.keyCode;
if(evt.type == "keydown")
{
curr_key = key;
if(key == 8)
{
evt.preventDefault();
if(0 < $('body').text().length)
$('body').text($('body').text().slice(0,-1));
}
}
else if(evt.type == "keypress")
{
if(97 <= key && key <= 122)
{
if(curr_key != key)
$('body').append(String.fromCharCode(key));
}
else
$('body').append(String.fromCharCode(key));
}
}
$(function(){
$('html').live({
keydown:function(e){
handleKeys(e);
},
keypress:function(e){
handleKeys(e);
}
})
})
- FYI,
live()
ist veraltet, da der jQuery-1.7. Sollten Sie verwendenbind()
oderon()
. - Ihre Geige für mich funktioniert. Ob Sie die Rücktaste, automatische Wiederholungen können abhängig von der OS oder browser. Ich bin mit OS X Snow Leopard und Chrom 24.
- Mit Firefox 17.0.1 unter Windows einige Fehler in Scheiben schneiden. Ich werde mehr Details in der "Antwort", aber es scheint wie eine Art bug
- Ja, es ist ein Firefox-spezifischen Fehler.
- Problemumgehung zu implementieren, Ihre eigenen auto-repeat. keydown-handler ruft
setInterval()
wiederholen Sie die Aktion regelmäßig, keyup-handler abgebrochen. - Fix ist:
$('body').text($('body').text().substring(0,$('body').text().length-1));
- wiederholen ist nicht das Problem für firefox für windows 17.0.1, ist es den zusätzlichen Zeilenumbruch mit $('body').text()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies: http://jsfiddle.net/NBZG8/1/
Müssen Sie behandeln die Rücktaste in beiden keydown-und keypress zu unterstützen Chrome und Firefox
In firefox für Windows 17.0.1 jeder Wert, der zurückgegeben wird, durch $("Auswahl").text() hat ein neue-Zeile-Zeichen am Ende angehängt. Also die Teilfolge hat bei mir nicht funktioniert:
Ich hatte das gleiche Problem mit Tastendruck auf mozilla.
Dank diesem Thema, es löst mein problem, also poste ich meinen code, wenn jemand versuchen, das gleiche zu tun wie ich.
In meinem Beispiel versuche ich zu auto-space, wenn der Benutzer geben Sie zwei zahlen, und es hat nicht funktioniert in Firefox so, dass ist mein code :
Bemerkte ich, dass Mozilla Griff die Rücktaste als keypress wo Chrome nicht.
Sorry für mein Deutsch ich bin Französisch