[JS] - Vervangen van UNDO functionaliteit door eigen ctrl-z

Pagina: 1
Acties:

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Hallo!

Is het mogelijk om de standaard UNDO functionaliteit van <ctrl-z> te vervangen door eigen functionaliteit? De context is een AJAX applicatie, waarin ik in verschillende formulieren een undo mogelijkheid wil maken (undo-stappen onthouden per formulier).

Ik heb een "onkeydown" event handler aan het javascript "document" object gehangen, die de volgende functie aanroept:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    function registerKey(e) {
        if ( !e ) var e = window.event;
        
        if ( document.all ) var key = e.keyCode;
            
        else var key = e.keyCode > 0 ? e.keyCode : e.which;
        
        if ( ctrlPressed(e) && (key == 90 || key == 122) ) {
        
            e.returnValue = 0;
    
                stopTheBubbling(e); // eigen functie die voor alle browsers alle mogelijke bubbling etc. stopt.
        
            alert('ctrl-Z');
            
            return false;
                
        }
    
    } // registerKey()


Die functie doet het prachtig en alert ook prachtig "ctrl-Z" ... maar pas NA de standaard undo actie van de browser is uitgevoerd. Het OnKeyDown event is dus eigenlijk "te laat". Is er wellicht een andere mogelijkheid om toch de standaard browser functionaliteit te kunnen stoppen?

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Hmmm ... het verhaal is een beetje anders geworden. Ik doe voor de duidelijkheid maar even een reply op mijn eigen verhaal.

Het eerste probleem heb ik opgelost: Door "onkeypress" te gebruiken als event in plaats van "onkeydown" wordt op het juiste moment het event uitgevoerd. In Mozilla en Firefox kan ik nu dan ook Ctrl-Z keurig afvangen.

Internet Explorer doet helaas niet leuk mee. In het hoofd-document geeft Internet Explorer keurig aan dat <ctrl-Z> is ingedrukt. Wanneer ik dat echter in een form-element doe (bijvoorbeeld: <input type='text'>) ... dan wordt de toetscombinatie ctrl-z volledig genegeerd en voert explorer gewoon z'n standaard eigen UNDO uit.

Is er nog een optie om Internet Explorer wijs te maken dat hij toch naar me moet luisteren?