Avatar billede stephanryer Nybegynder
07. februar 2007 - 09:56 Der er 5 kommentarer og
1 løsning

Standard for key events

Følgende metode er browserafhængig:

function doClick(buttonName,e)
    {
//the purpose of this function is to allow the enter key to
//point to the correct button to click.
        var key;

        if(window.event)
              key = window.event.keyCode;    //IE
        else
              key = e.which;    //firefox
   
        if (key == 13)
        {
            //Get the button the user wants to have clicked
            var btn = document.getElementById(buttonName);
            if (btn != null)
            { //If we find the button click it
                btn.click();
                event.keyCode = 0
            }
        }
  }

Kan denne metode laves, så den ikke længere er browserafhængig?

Altså er der en standardmåde at aflæse hvilken tast der trykket?

Link til den artikel, hvorfra kode-eksemplet er taget: http://www.codeproject.com/useritems/EnterKeyToButtonClick.asp

Beklager kun at kunne tilbyde 10 point, men har ikke flere atm.

På forhånd tak.
Avatar billede stephanryer Nybegynder
07. februar 2007 - 10:05 #1
Det ser ikke ud til at dette er muligt pt:

http://www.howtocreate.co.uk/tutorials/javascript/domevents
Avatar billede stephanryer Nybegynder
07. februar 2007 - 17:06 #2
lukker
Avatar billede jhe-ting Nybegynder
08. februar 2007 - 04:59 #3
Ønaket om browseruafhængig kode er til stadihed en kilde til frustration.
Hvis alle browsere overholdt en standard for dokument- og event-model ville det have været en let sag.
Man må ofte sørge for at websiden virker uden script eller CSS.

Man starter derfor tit med at lave et design i ren HTML for at formidle den ønskede information, så det kan bruges i helt 'lamme' browsere.

Dernæst kan man rafinere præsentationen med CSS. Alene her er der mange muligheder for browserinkompabilitet.

Scripts kan til sidst gøre siden mere levende og intelligent, som f.eks. ønsket om en 'default' knap aktiveret af enter-tasten via script.

Dit problem omfatter 3 primære faciliteter der alle er browserafhængige.

1. Tilføje en key-envent-handler til dokumentet.
2. Detektere tastens kode.
3. Forhindre standard fumktion.

Artiklen om DOM-events beskriver i detailjer alle disse faciliteter. (: God artikkel stephan! :)

re 1:

Til at få en ensartet behandling under mange forskellige omstændigheder:

function catchEvent(objElm, strEvent, pFunction){
    if (objElm.addEventListener){ // FF
        objElm.addEventListener(strEvent, pFunction, false);
    } else if (objElm.attachEvent){ // IE
        objElm.attachEvent("on"+strEvent, pFunction);
    } else { // IE can do this, maybe some XYZbrowser has none of the above.
        objElm["on"+strEvent] = pFunction;
        objElm[strEvent] = pFunction;
    }
}

re 3:

Følgende fragment kan være nyttigt:

    if (evt.preventDefault){
        evt.preventDefault();
    } else {
        event.cancelBubble = true;
        event.keyCode=0;
    }
    return false;
Avatar billede olebole Juniormester
08. februar 2007 - 15:54 #4
<ole>

Den sidste kode er vist lidt sammenrod af preventDefault og stopPropagation ... eller?  =)

/mvh
</bole>
Avatar billede stephanryer Nybegynder
08. februar 2007 - 16:19 #5
Well, efter hvad jeg kan forstå er det ikke muligt at gardere sig 100% mht forskellige tekstfelter der skal aktivere forskellige buttons, så jeg droppe at arbejde mere på det.

Men det er for mig at se en skamplet i programmerings-historien at browsere ikke kan overholde samme standarder. Det kuglegraver hele ideen om lagdeling, hvor HTML er nød til at tage højde for, hvilke browsere der skal læse den.
Avatar billede jhe-ting Nybegynder
09. februar 2007 - 04:18 #6
OK - sandt nok Ole :o)

Det her er et bedre eksempel:

function handle_key_event(evt){
    evt = evt?evt:event;

    // ... ...

    // Forhindre standard handling

    if (evt.preventDefault){
        evt.preventDefault();
    } else {
        evt.keyCode=0;
    }

    // Standse videre udbredelse

    if (evt.stopPropagation){
        evt.stopPropagation();
    } else {
        evt.cancelBubble = true;
    }

    return false;
   
}
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

IT-JOB

Politiets Efterretningstjeneste

Teamledere til PETs indhentningsafdeling

Netcompany A/S

IT Consultant

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation