Avatar billede bomann Nybegynder
20. januar 2007 - 12:43 Der er 6 kommentarer og
1 løsning

Hvordan fungerer function scope i JavaScript

Jeg har en "lokal" function DoIt på min side.
Jeg har ligeledes en function DoIt i en .js fil som jeg inkluderer.
Jeg kan konstatere at hvis jeg kalder DoIt, kalder jeg den "lokale" DoIt, hvilket jo er meget naturligt - men hvordan kan jeg så kalde DoIt i .js filen fra den pågældende side?

Det er en nødvendighed at de to functions har samme navn!

Tak, Bomann
Avatar billede roenving Novice
20. januar 2007 - 13:05 #1
Det vil altid være den sidste funktion, parseren læser, der vil være aktiv !-)

-- eneste mulighed er at oprette et objekt i det eksterne script, hvor funktionen er en metode på !o]

-- men hvordan kan det være et krav, at forskellige funktioner skal have samme navn, det lyder helt vandvittigt ?-)
Avatar billede bomann Nybegynder
20. januar 2007 - 13:32 #2
I SDK'et til Windows Media er der en function der hedder onRemoteEvent.
Denne function ligger i en fil der hedder BasicFunctions.js.
Når man klikker på fjernbetjeningen i sit Media Center, trigger dette ikke KeyDown, men onRemoteEvent kaldes direkte. På nogle sider vil jeg gerne have noget custom funktionalitet på tryk på fjernbetjeningen, hvilket jeg får ved at lave en "lokal" onRemoteEvent som Media Centeret så kalder i stedet.

Det jeg gerne vil opnå er, at jeg kalder den "lokale" onRemoteEvent hvis det element der har fokus kræver custom KeyDown funktionalitet, og hvis elementet er standard, kalder den "lokale" function den der ligger i .js filen.

Jeg vil helst være fri for at lave den "originale" onRemoteEvent fra SDK'et om, så den ikke skal håndtere alle custom elementer på hele sitet.

Forstår du problematikken?
Avatar billede bomann Nybegynder
20. januar 2007 - 13:33 #3
I SDK'et til Windows Media <Center> er...
Avatar billede roenving Novice
20. januar 2007 - 13:57 #4
Så læg den gamle funktion i en variabel og kald den, hvis ikke det er det specielle element, der kalder !-)

f.eks.

<script type="text/javascript">
var oldOnRemoteEvent = onRemoteEvent;

function onRemoteEvent(){
  if(event.srcElement.id != "minSpecielleMediaPlayer")
    oldOnRemoteEvent();
  else{
    //din egen funktion !-)
  }
}
</script>
Avatar billede bomann Nybegynder
20. januar 2007 - 14:27 #5
Det er jo genialt... Tak!

/Bomann
Avatar billede roenving Novice
20. januar 2007 - 14:28 #6
Velbekomme '-)
Avatar billede roenving Novice
20. januar 2007 - 17:13 #7
-- og tak for point ;~}
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