molily: Event STRG + V

Beitrag lesen

Hallo,

Ich möchte beim pasten von Text einen Event auslösen, wie krieg ich das hin?

Im IE gibt es onpaste.

function eventManager(Ereignis) {
if (!Ereignis) Ereignis = window.event;
if (Ereignis.which)
{
Tastencode = Ereignis.which;
}

else if (Ereignis.keyCode)
{
Tastencode = Ereignis.keyCode;
}
if (Tastencode!=86) {
lastTastenCode = Tastencode;
}
if (Tastencode==86)
{
Tastensumme = 86 + lastTastenCode;

if(Tastensumme==103)
{
alert('STRG V');
}
}

Frage lieber in einem Rutsch ab, ob die Steuerung-Taste gedrückt ist und ob der Tastencode der Taste V entspricht. Im IE kannst du einfach onpaste verwenden.

Es ist allerdings gar nicht so einfach, wirklich zuverlässig herauszubekommen, ob Strg + V gedrückt wurde. Mithilfe des SELFHTML-Chats habe ich mal ein Cross-Browser-Beispiel gebastelt:

<html><head>  
<script type="text/javascript">  
[code lang=javascript]window.onload = init;  
function logg (text) {  
 var div_elem = document.createElement("div");  
 div_elem.appendChild(document.createTextNode(text));  
 logg.log_element.appendChild(div_elem);  
}  
function keypress (e) {  
 e = e || window.event;  
 logg(e.type + " ctrlKey:" + e.ctrlKey + " metaKey:" + e.metaKey + " which:" + e.which + " keyCode:" + e.keyCode + " charCode:" + e.charCode);  
 if ((e.ctrlKey || e.metaKey) && e.charCode == 118) {  
  logg("paste detected (Gecko)");  
 } else if (e.ctrlKey && e.keyCode == 86) {  
  logg("paste detected (Opera)");  
 } else if (e.ctrlKey && e.keyCode == 22) {  
  logg("paste detected (Konqueror)");  
 } else if (e.metaKey && e.keyCode == 118) {  
  logg("paste detected (Safari)");  
 }  
}  
function paste () {  
 logg("paste detected (IE)");  
}  
function init () {  
 logg.log_element = document.getElementById("log");  
 var elem = document.getElementById("i");  
 elem.onkeypress = keypress;  
 elem.onpaste = paste;  
}

</script>
</head><body>

<input type="text" id="i">

<div id="log"></div>

</body></html>[/code]

Die Abfrage von metaKey zielt auf Macintosh-Browser mit Apfel + V als Tastaturkombination zum Einfügen.

Mathias