Avatar billede kjeldsted Novice
14. april 2011 - 22:28 Der er 9 kommentarer og
1 løsning

Kalde function uden for iFrame

Hejsa.

Jeg kunne godt tænke mig at vide om det er muligt at kalde en funktion der ligger uden for en iframe. Har siddet og ledt lidt rundt omkring, men finder ikke frem til andet end at parent.parent.document skulle kunne hjælpe. Men syens jeg nu ikke er tilfældet.

Vi har hoved vinduet der jo bare er et body tag. Her inden i har vi så en iframe som følger.

<html>
<head>
<script>
function funktion_der_skal_kaldes()
{
    alert('Hello World!');
}
</script>
</head>
<body>
Indhold af "top vindue"

<iframe name="mainFrame" src="iframe.htm"></iframe>
</body>
</html>


iframe.htm:

<input type="button" onClick="funktion_der_skal_kaldes()">

Jeg kan jo sagtens regne ud at ovenstående ikke vil virke da funktion_der_skal_kaldes() ikke er defineret inden i iFramen. Men vil det ikke være muligt at hente denne funktion fra top vinduet. Jeg har ingen problemer med at kalde en funktion fra top vinduet som er defineret i iframen. Men hvordan går det den anden vej?
Avatar billede tjens Nybegynder
14. april 2011 - 23:04 #1
<input type="button" onClick="parent.funktion_der_skal_kaldes()">
Avatar billede kjeldsted Novice
14. april 2011 - 23:16 #2
Jeg får blot en fejl med "Object dosn't support this property or method".
Avatar billede tjens Nybegynder
14. april 2011 - 23:49 #3
Det virker fint når jeg tester.

Demo: http://tjens.dk/eksperten/936776/LinkToIFrame.html
Avatar billede Slettet bruger
15. april 2011 - 00:08 #4
Det kræver at iframen "bor" i samme domæne som hoved-dokumentet.
- men gør den det, burde der ikke være noget problem..
Avatar billede kjeldsted Novice
15. april 2011 - 23:01 #5
Hm. Så det vil sige jeg er pænt prisgivet hvis der er tale om en .hta application?
Avatar billede tjens Nybegynder
15. april 2011 - 23:59 #6
Ja det er lidt pudsigt:
I dit tidligere spørgsmål lavede vi jo en HTA, der hentede indhold fra iframen til HTA-siden, men når jeg tester eksemplet i #3 som en lokal HTA, virker parent.minfunktion() ikke.

Jeg kan heller ikke starte Visual Studio med statement "debugger;" og dermed kan jeg ikke navigere rundt i domtræet i debugmode.

Så jeg kan desværre ikke hjælpe med denne.
Avatar billede kjeldsted Novice
16. april 2011 - 00:07 #7
Hm. Ellers må jeg jo bare lave submit knappen i selve .hta'en og ikke i iframen. Gør det bare lidt mere besværligt designmæssigt.
Avatar billede tjens Nybegynder
16. april 2011 - 00:19 #8
Søgte lidt videre og fandt svaret:
Man skal angive at man stoler på iframens indhold ved at skrive:

<iframe  APPLICATION="yes" src="..." ...>

Så virker det.

Læs mere her: http://msdn.microsoft.com/en-us/library/ms536496%28v=vs.85%29.aspx
Avatar billede kjeldsted Novice
16. april 2011 - 00:23 #9
SMUKT!!!!

Utroligt jeg ikke selv kunne finde dét. Mange tak og smid et svar.
Avatar billede tjens Nybegynder
16. april 2011 - 00:34 #10
Svar
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