Avatar billede 2c Nybegynder
06. maj 2005 - 10:15 Der er 15 kommentarer og
2 løsninger

event fra iframe

Hej

Jeg har lavet en dropdown menu i javascript. Den skal virke på den måde, at når man flytter musen væk fra den, eller klikket et andet sted skal den folde sig sammen igen, men det gør den ikke. Jeg tror problemet er at man klikker i en iframe, eller flytter musen derned.

Kan det ikke lade sig gøre at fange et javascript event fra en iframe? Fx et klik ?

P.S.Jeg er ikke den store javascript haj.
Avatar billede roenving Novice
06. maj 2005 - 10:51 #1
Du har vel funktionaliteten i en javascript-funktion ?-)

-- så skal du bare videredirigere fra det selvstændige dokument til moderdokumentet:

<body onmouseover="parent.javascriptFunction();">
Avatar billede 2c Nybegynder
06. maj 2005 - 11:07 #2
Jo, det virkede.

Problemet er bare at der er mange der sider og laver sider som skal vises i iframen, og der er også allerede lavet mange sider, så jeg vil helst undgå at opdatere alle siderne, samt sige til folk at de lige skal huske at tilføje noget javascript i deres sider for at menuen virker.

Kan man ikke gøre det på en måde, så den side der holder iframen kan se når der klikkes i iframen?
Avatar billede roenving Novice
06. maj 2005 - 11:13 #3
Tjah, joeh ...

Det jeg selv ville finde på var at inkludere et standard-javascript i alle sider, for på den måde kan man vedligeholde den slags uden problemer !-)

-- men hvis du absolut vil, kan du onload tilknytte noget til en event på en underside, f.eks.

<script type="text/javascript">
window.onload = function(){
  var docs = window.frames;
  for(i=0;docs.length>i;i++){
    docs[i].onmouseover = function(){
      parent.javascriptFunction();
    }
  }
}
</script>

-- absolut utestet, så jeg har ikke en fornemmelse af, om man får fat i de rigtige objekter !-)
Avatar billede flushout Nybegynder
06. maj 2005 - 11:18 #4
document.frames...

Kan måske løse det for dig, herunder kan du læse mere info:

http://msdn.microsoft.com/workshop/author/dhtml/reference/collections/frames.asp
Avatar billede 2c Nybegynder
06. maj 2005 - 11:26 #5
Problemet med at inkludere et javascript på samtlige sider er for i det her tilfælde det samme som at kalde parent.javascriptFunction(), da alle sider skal gøre det, og jeg ikke selv laver alle sider. Hvis nogen glemmer det virker menuen pludselig ikke på den side.

Nu har jeg løst problemet som en variant af det roenving først foreslog.

Jeg har lavet iframen således, og umidelbart ser det ud til at virke:

<iframe name="vis" onmouseover="parent.javascriptFunction();" .....</iframe>

Jeg har ingen anelse om, om det er en grim/forkert måde at gøre det på, eller om det virker i andre browsere end de sidste versioner af ie og firefox. Ved i noget om det ?
Avatar billede flushout Nybegynder
06. maj 2005 - 11:32 #6
Det burde være kompatibelt med de fleste browsere.. :)
Avatar billede 2c Nybegynder
06. maj 2005 - 11:33 #7
Ok
Og sidste spørgsmål:

Kan jeg lave noget der minder om mit iframe eksempel, bare med klik istedet ?

For <iframe name="vis" document.onclick="parent.javascriptFunction();".....

virker ihvertfald ikke. (Føler sig som noob)
Avatar billede roenving Novice
06. maj 2005 - 11:37 #8
Du kan i hvert fald lave det onload !-)

<iframe ... onload="function(){document.onclick=function(){javascriptFunction();}}" ...

-- heller ikke testet !o]
Avatar billede 2c Nybegynder
06. maj 2005 - 11:56 #9
Dit sidste eksempel kan jeg ikke få til at virke. Jeg ved ikke hvorfor :(
Avatar billede flushout Nybegynder
06. maj 2005 - 11:57 #10
Hvis du laver en onclick som i din Iframe skal der ikke stå document foran:

<iframe name="vis" onclick="parent.javascriptFunction();".....
Avatar billede flushout Nybegynder
06. maj 2005 - 11:58 #11
Avatar billede 2c Nybegynder
06. maj 2005 - 12:10 #12
<iframe name="vis" onclick="parent.javascriptFunction();".....
Kan jeg heller ikke få til at virke :(

Jeg går lige til middags pause en 1/2 time. Har jeg ikke fundet en løsning inden jeg kommer tilbage eller i ikke er kommet med flere forslag, benytter jeg mig af:
<iframe name="vis" onmouseover="parent.javascriptFunction();"... eller indkluderer en javascript fil på alle siderne.

Tak for hjælpen. Smider i begge et svar ?
Avatar billede flushout Nybegynder
06. maj 2005 - 12:35 #13
hovsa.. onclick kan slet ikke bruges med en iframe.. du kan bruge onfocus:

<iframe name="vis" onfocus="parent.javascriptFunction();".....
Avatar billede 2c Nybegynder
06. maj 2005 - 12:49 #14
Ok.
Onfocus får det da til at virke nogenlunde som jeg vil ha. Nu skal jeg bare have noget javascript der sætter den side der holder framen i focus når jeg kører musen hen over den. Men det kan jeg selv side og lege lidt med.

Jeg siger mange tak for hjælpen til jer begge.
Smid et svar, så får i point.
Avatar billede flushout Nybegynder
06. maj 2005 - 13:03 #15
Det var så lidt.. :)
Avatar billede roenving Novice
06. maj 2005 - 13:04 #16
Velbekomme '-)
Avatar billede roenving Novice
06. maj 2005 - 14:22 #17
-- 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