Avatar billede mobildata Nybegynder
30. oktober 2006 - 22:30 Der er 8 kommentarer

prob med Onkeydown

Jeg har et document der "lytter" på Onkeydown.
Ved hjælp af document.onkeydown = gørnoget();

men dette document skal ligge i en iframe som igen ligger i et frameset...

funktion virker fint så længe dokumentet i iframen er i focus men lige så snart man klikker uden for iframen virker det ikke.

jeg har prøvet med:

top.document.onkeydown = gørnoget();
window.onkeydown = gørnoget();
parent.document.onkeydown = gørnoget();

og andre varianter.

Hvordan "lytter" jeg efter keydown helt ude i top dokumentet?
Avatar billede jhe-ting Nybegynder
30. oktober 2006 - 22:52 #1
// Inde i en IFrame
var frameSet = parent;
//I FrameSet
var mainDoc = frameSet.top;

mainDoc.onkeydown = handleKey;

function handleKey(){
  status = "keydown in "event.scrElement.tagName;
}
Avatar billede olebole Juniormester
31. oktober 2006 - 10:54 #2
<ole>

Det er igen IE-only kode - og i øvrigt forkert  :)

function handleKey(e){
  if (e) tName = "keydown in " + e.target.tagName;
  else tName = "keydown in " + event.scrElement.tagName;
  alert(tName);
}

/mvh
</bole>
Avatar billede mobildata Nybegynder
01. november 2006 - 16:35 #3
olebole har ret i sin antagelse, og kan derfor lægge et svar. mange tak!
Avatar billede jhe-ting Nybegynder
02. november 2006 - 01:47 #4
Den fejl ole så venliget har rettet ligger i den del der må være omfattet af udtrykket 'gørnoget'. (Kun demo.)
Mit svar om hvor man hægter sig på keydown-event'et er ikke modsagt.
Det essentielle er at det er 'document.parent.top.onkeydown' der skal bruges.

Ole - hvis du kan anbefale nogle gode steder at læse om browser-uafhængig web-design ville det glæde mig meget.

PS: Debug af keyboard-event's kan være besværlig hvis man bruger alert() i event-handler'en
Avatar billede olebole Juniormester
03. november 2006 - 10:22 #5
jhe-ting >> "Det essentielle er at det er ..."
- nej, det kommer helt anpå, hvad der skal ske. Hvis default-event'en skal cancel'es (og det skal den jo ofte), skal man bruge document.onkeypress, da FF ikke kan cancel'e events på onkeydown  ;o)

Gode tutorials om webkodning er generelt ganske vanskeligt - også vedr. browser-uafhængighed. Jeg kan lægge et par links, jeg selv har brugt/bruger intensivt:
    http://www.w3.org/TR/html401/
    http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp
    http://developer.mozilla.org/en/docs/Main_Page
Avatar billede jhe-ting Nybegynder
03. november 2006 - 18:16 #6
olebole >> "nej, det kommer helt anpå, hvad der skal ske"

De oprindelige sp. fra mobildata handler om:
    "en iframe som igen ligger i et frameset..."
    og at komme i forbindelse med det yderste vindue.

Derfor mener jeg at mit svar :
  "
    // Inde i en IFrame
    var frameSet = parent;
    //I FrameSet
    var mainDoc = frameSet.top;

    mainDoc.onkeydown =
  "
er relevant og en klar beskrivelse.

Man kan altid diskutere hvad der er esentielt,
for det kommer altid an på alt andet.

I dette tilfælle havde mobildata allerede fundet ud af at 'gøre noget' men manglede at komme til på det rigtige sted i objekt-hierakiet.
Avatar billede jhe-ting Nybegynder
21. november 2006 - 23:28 #7
Lukketid?
Avatar billede jhe-ting Nybegynder
05. oktober 2007 - 15:48 #8
mobildata >> Hvis olebole ikke vil have points må du selv lægge et svar og accepter det for at lukke spørgsmålet.
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