2016-10-01 10 views
3

Ich bin derzeit eine Web-Anwendung zu entwickeln, und ich ein Problem auftreten. Wie Sie vielleicht wissen oder nicht, Chrom verfügt über eine Funktion, die <input> (vor allem Texteingaben) eine „Undo“ -Funktion gibt, wenn Sie STRG + Z und „Wiederholen“ mit STRG + Y traf es wie ein gutes Feature in normalen Websites erscheinen, aber zur Zeit mache ich einen Bildeditor, der auch diese Tastaturkürzel benutzt (STRG + Z & STRG + Y).Deaktivieren Chrome Texteingabe rückgängig machen/Redo (CTRL + Z/Strg + Y)

In meiner App habe ich auch eine Texteingabe, also wenn ich den Inhalt der Texteingabe ändere und dann STRG + Z drücke, um die Änderungen in meinem Bildeditor rückgängig zu machen, würde es stattdessen die Änderung im Texteditor rückgängig machen!

hier ist ein Codepen, die die Wirkung
(Anweisung ist in der Codepen)

Also abschließend möchte ich zeigen, würde die Undo/Redo-Funktion in Chrome entfernen, wie kann ich das tun?

Antwort

0

var ctrlDown = false; 
 
var ctrlKey = 17, vKey = 86, cKey = 67, zKey = 90; 
 

 
document.body.onkeydown = function(e) { 
 
    if (e.keyCode == 17 || e.keyCode == 91) { 
 
    ctrlDown = true; 
 
    } 
 
    if ((ctrlDown && e.keyCode == zKey) || (ctrlDown && e.keyCode == vKey) || (ctrlDown && e.keyCode == cKey)) { 
 
    e.preventDefault(); 
 
    return false; 
 
    } 
 
} 
 
document.body.onkeyup = function(e) { 
 
    if (e.keyCode == 17 || e.keyCode == 91) { 
 
    ctrlDown = false; 
 
    }; 
 
};
<body> 
 
    <input type='text' value='test' /> 
 
</body>

funktionierts?

Gestohlen von here, gefunden auf here als Kommentar von @KadeHafen.

+1

Ah! Ich habe 'e.preventDefault' vorher benutzt, aber es funktioniert nicht für mich .. ist es, weil ich' keypress' und nicht 'keydown' benutzt habe? –

+0

@Bintang Ich denke, dass die Verwendung von 'Tastendruck' wahrscheinlich das Problem für Sie war, da es nicht funktioniert, wenn ich es in meiner Antwort ändere. – StardustGogeta

1

könnten Sie verwenden onkeydown Ereignis und prevent .. zB.

document.onkeydown = function(e) { 
    if (e.ctrlKey && e.key === 'z') { 
    e.preventDefault(); 
    alert("CTRL + Z!"); 
    } 
} 
+1

Ja, ich mag das und es funktioniert in IE11 und Chrome. :) Allerdings Undo noch verfügbar im Kontextmenü ist sowohl in IE11 & Chrome, wird so zusätzliche Arbeit erforderlich sein, dass zu deaktivieren :(ich dies tat: \t \t \t if (e.ctrlKey && e.key === 'z') { \t \t \t \t return false; \t \t \t} – Zeek

Verwandte Themen