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