FireGlow: Event STRG + V

Servus!

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

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');
}
}

Das ist mein Ansatz, aber es klappt nicht richtig... versteh aber auch ent ganz warums net klappt ;)!

Bin für jede Hilfe dankbar

-FireGlow

  1. Hallo FireGlow,

    Servus!

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

    Indem Du bspw. auf ctrlKey zurückgreifst.

    Micha

    Mit freundlichem Gruß
    Micha

    --
    LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
  2. Hallo,

    Nur mal so am Rande: das ist Javascript!

    Beste Grüße

  3. 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

    1. if ((e.ctrlKey || e.metaKey) && e.charCode == 118) {

      ...

      } else if (e.metaKey && e.keyCode == 118) {

      Die Abfrage ist dann natürlich doppelt.

      (Danke, Tim.)

      Mathias

      1. Moin!

        Hört sich alles cool an, schaus mir mal durch.

        Danke, sollte alles wichtige dabei sein! ;-)

        Gruß

        FireGlow