Avatar billede dotnewbi Juniormester
18. juli 2008 - 11:07 Der er 9 kommentarer og
1 løsning

keydown i IE

Hej eksperter, jeg kan af en eller anden grund ikke få neden stående kode til at virke i IE men det virker fint i firefox.

var CtrlKey = false;
var ShiftKey = false;
var AltKey = false;

function getKey(e){
    e = (typeof e == "undefined") ? event : e;
    key = (typeof e.which == "number") ? e.which : e.keyCode;
       
        if(key == 16)
        ShiftKey = true;
       
        if(key == 17)
        CtrlKey = true;
       
        if(key == 18)
        AltKey = true;
       
        if(key == 83 && CtrlKey == true && ShiftKey == true)
        alert("save!");   
       
        if(key == 77 && CtrlKey == true && ShiftKey == true)
        alert("move!");   
       
        if(key == 78 && CtrlKey == true && ShiftKey == true)
        alert("new!");   
       
        if(key == 67 && CtrlKey == true && ShiftKey == true)
        alert("copy!");   
       
        if(key == 82 && CtrlKey == true)
        alert("reset!");
       
        if(key == 46 && CtrlKey == true)
        alert("delete!");
       
        if(key == 69 && CtrlKey == true)
        alert("edit!");       
       
        alert(key);   
    }
   
    document.onkeydown=getKey;
   

document.onkeyup=function(e){
CtrlKey=false;
ShiftKey = false;
AltKey = false;
}
Avatar billede w13 Novice
18. juli 2008 - 11:10 #1
Alerter fint i mit IE 7.
Avatar billede montago Praktikant
18. juli 2008 - 11:36 #2
det er rockersvært at lave en god eventhandler som virker crossbrowser...

den jeg har brygget sammen på www.mdk-photo.com/Editor virker nogenlunde
Avatar billede montago Praktikant
18. juli 2008 - 11:38 #3
det skal nok siges... at de script fejl som kommer, ikke så meget har noget at gøre med eventhandlere... men derimod længere nede i scriptet...

Jeg har kun testet med FF2 under udviklingen... men eventhandleren fungere efter hensigten...
Avatar billede olebole Juniormester
18. juli 2008 - 20:54 #4
<ole>

Der er ikke noget særlig 'rockersvært' ved at lave en god cross browser event handler. Der er primært to event modeller - og de er begge ret veldokumenterede  =)

Jeg forstår dog ikke rigtig din måde at håndtere modifiers på. Jeg ville nok gøre noget à la:

<script type="text/javascript">
function getKey(e){
    e = (typeof e == "undefined") ? event : e;
    var key = (typeof e.which == "number") ? e.which : e.keyCode;
   
    if(key == 83 && e.ctrlKey && e.shiftKey)
    oDispl.nodeValue = "save!";   
   
    if(key == 77 && e.ctrlKey && e.shiftKey)
    oDispl.nodeValue = "move!";   
   
    if(key == 78 && e.ctrlKey && e.shiftKey)
    oDispl.nodeValue = "new!";   
   
    if(key == 67 && e.ctrlKey && e.shiftKey)
    oDispl.nodeValue = "copy!";   
   
    if(key == 82 && e.ctrlKey)
    oDispl.nodeValue = "reset!";
   
    if(key == 46 && e.ctrlKey)
    oDispl.nodeValue = "delete!";
   
    if(key == 69 && e.ctrlKey)
    oDispl.nodeValue = "edit!";       
   
    // alert(key);   
}
document.onkeydown=getKey;
</script>

<div id="gnu">&nbsp;</div>

<script type="text/javascript">
var oDispl = document.getElementById("gnu").firstChild;
</script>

/mvh
</bole>
Avatar billede montago Praktikant
18. juli 2008 - 21:00 #5
ole:
det kommer vel an på hvad den skal kunne...

hvis man vil fange alle events og samtidig gøre det muligt at bruge modifiers (ctrl, alt, shift) - samt disabling browserens normale handling... så skal der lidt til !


men du skal da ikke holde dig tilbage med at poste verdens bedste keyboard-eventhandler i Javascript ;-) ... kan jo være den er bedre end den jeg har skruet sammen...
Avatar billede montago Praktikant
18. juli 2008 - 21:01 #6
eventuelt Copy-Paste ud af vinduet... er lidt tricky
Avatar billede olebole Juniormester
18. juli 2008 - 21:16 #7
Alt varierer naturligvis i sværhedsgrad - alt efter, hvad det skal kunne ... det er ganske banalt  =)

Ja, 'så skal der lidt til' - men det er jo heller ikke 'meget'  ;o)

Da stortset alle har en Flash player installeret, er copy/paste ikke det store problem i hovedbrowserne. Er man lidt opfindsom kan det også lade sig gøre indenfor samme applikation ved brug af et skjult textarea ... men det er ret bøvlet  ;o)
Avatar billede olebole Juniormester
18. juli 2008 - 21:19 #8
- men det skal indrømmes, at hvis man tager Opera alvorligt som browser (og det er jo i sig selv en kæmpe overdrivelse), så bliver tingene meget let bøvlede!
Avatar billede montago Praktikant
18. juli 2008 - 21:43 #9
ohooo....

Firefox har vidst slækket på sikkerheden... eller også husker jeg galt...
textarea tricket virker i FF 2.0.0.16 nu...
Jeg kan Copy-Paste fra IE6 til FF2 og tilbage igen i min editor :-D

wuhuu -


... dvs adgang til ClipBoard
Avatar billede dotnewbi Juniormester
06. september 2008 - 11:03 #10
lukker!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester