[JS] Iframe sluiten

Pagina: 1
Acties:

Onderwerpen


  • lukjah
  • Registratie: Januari 2010
  • Laatst online: 16-09 19:42
Ik wil graag een iframe sluiten met een knop die in het iframe zelf zit.

Het volgende heb ik geprobeerd.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
    <script language="JavaScript">
        function closeIframe(id) {
          elem = parent.getElementById(id) 
          elem.style.display='none';
        }
    </script>
</head>
<body>
    <a href="#" onclick="closeIframe('frame')">Close</a>
</body>
</html>


JavaScript:
1
2
3
4
5
6
function closeIframe(id) {
   var iframe = document.getElementById(id);
   iframe.parentNode.removeChild(iframe);
}

<a href="#" onclick="window.parent.closeIframe(frame)">Close</a>


Of kan dit helemaal niet?

EDIT [ en { goedgezet

[ Voor 4% gewijzigd door lukjah op 11-02-2010 20:55 ]


  • Haan
  • Registratie: Februari 2004
  • Laatst online: 23:11

Haan

dotnetter

Heb je de code rechtstreeks in je post geplakt? Want '[' ipv '{' gaat natuurlijk nooit werken

Kater? Eerst water, de rest komt later


  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 20-09 13:02
Haan is scherp, want dat was me nog niet eens opgevallen.

Mijn vraag is: Waarom moet die knop in de Iframe zelf zitten? Als dat niet beslist noodzakelijk is dan is de oplossing een stuk makkelijker...

People who live in glass houses shouldn't throw stones.


  • lukjah
  • Registratie: Januari 2010
  • Laatst online: 16-09 19:42
Foutje bij het kopiereen, ik had de '{' niet gekopieerd en heb het er dus fout bijgetypt :P. Maar in de code staat wel '{'.

  • lukjah
  • Registratie: Januari 2010
  • Laatst online: 16-09 19:42
Saeverix schreef op donderdag 11 februari 2010 @ 20:52:
Haan is scherp, want dat was me nog niet eens opgevallen.

Mijn vraag is: Waarom moet die knop in de Iframe zelf zitten? Als dat niet beslist noodzakelijk is dan is de oplossing een stuk makkelijker...
Dat weet ik, maar ik wil hem wel graag erin, omdat het iframe fullscreen is.

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Een iframe kan naar zichzelf refferen via "window.frameElement".
Dus in je iframe op de knop zetten "window.frameElement.style.display='none'; ".

De reden waarom je code niet werkt zit hem waarschijnlijk in de "onclick="window.parent.closeIframe(frame)", closeIframe(frame) moet closeIframe('frame') zijn aangezien je een string mee moet geven voor de id.
(deze foutmelding had je zelf in een javascript debugger zoals firebug kunnen zien)

[ Voor 50% gewijzigd door DanielG op 11-02-2010 21:06 ]

http://xyproblem.info/


  • lukjah
  • Registratie: Januari 2010
  • Laatst online: 16-09 19:42
Geweldig! dat was het, ik ben je zeeeer dankbaar.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:56

Creepy

Tactical Espionage Splatterer

Javascript hoort toch echt in Webdesign, Markup & Clientside Scripting en niet in Programming.
En los daarvan: krijg je nu een foutmelding? Zo ja, welke? En wat heb je zelf dan al geprobeerd?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Geen probleem, was toevallig vandaag zelf lang bezig met iframe + javascript voor werk.
Maar het gebruik van een javascript debugger is zeer handig, als ik jou was zou ik een beetje debug werk gaan leren.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • maarud
  • Registratie: Mei 2005
  • Laatst online: 23:31
edit: laat maar, ik kom er wel uit :)

[ Voor 93% gewijzigd door maarud op 13-02-2010 21:59 ]


Acties:
  • 0 Henk 'm!

  • Kirth
  • Registratie: September 2009
  • Laatst online: 08-09-2024
Ik zou persoonlijk de iframe in een tag met id zetten. Dan via javascript het volgende doen: tag_met_id.innerHTML = "". Of het werkt en/of geldig is is natuurlijk een heel andere kwestie.

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 18-09 15:56

pieturp

gaffa!

Kirth schreef op zondag 14 februari 2010 @ 13:57:
Ik zou persoonlijk de iframe in een tag met id zetten. Dan via javascript het volgende doen: tag_met_id.innerHTML = "". Of het werkt en/of geldig is is natuurlijk een heel andere kwestie.
Dat werkt natuurlijk niet. De innerHTML van je pagina met niks vervangen geeft gewoon een lege pagina...
Bovendien is je tag_met_id geen variabele en moet je de DOM aanspreken:

JavaScript:
1
document.getElementById('tag_met_id').innerHTML = ''; // het element met het id "tag_met_id" leeg maken

[ Voor 20% gewijzigd door pieturp op 14-02-2010 23:40 ]

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 17-09 15:29
Moeten we Lukjah er niet op wijzen dat iframes evil zijn?

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 23:11

Haan

dotnetter

Xantios schreef op woensdag 17 februari 2010 @ 20:43:
Moeten we Lukjah er niet op wijzen dat iframes evil zijn?
Begin jij dan eerst maar eens met toelichten waarom je dat vindt..

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Xantios schreef op woensdag 17 februari 2010 @ 20:43:
Moeten we Lukjah er niet op wijzen dat iframes evil zijn?
Niet altijd, ligt aan de context. Aangezien wij die niet weten kunnen we ook niet zeggen of ze evil zijn of niet in deze implementatie (maar ik zou ze idd wel zoveel mogelijk willen vermijden :P).

http://xyproblem.info/

Pagina: 1