Vanaf iframe inhoud naar functie in top pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Hans De Ridder

Hans De Ridder

17/07/2017 20:38:53
Quote Anchor link
Ik gebruik een form in een iframe.
De bedank pagina komt daar ook terecht.
Nu wil ik dat die pagina de DIV onzichtbaar maakt (display = 'none'),
die om de iframe staat (na 5 seconden).
Het zou ook direct mogen vanaf de iframe pagina.
Dan is de overzichtspagina weer beschikbaar.
Alles staat in dezelfde map bij hetzelfde domein.
Heb echt van alles geprobeerd met parent, met top, enz.
Dit in de bedank pagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
function stuur()
{
//window.top.document.sluit();
 var elem = top.document.getElementById('formdiv');
elem.style.display = 'none';
}

function hide()
{
window.setTimeout("stuur()",5000);
}
</script>


Ik gebruik de volgende html:
Pagina :testform.html (met de iframe)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<script>
function sluit()
{
document.getElementById('formdiv').style.display = "none";
}
</script>
</head>
<body>
</script>
</head>
<body
<div id="formdiv">
<iframe id="formframe" width="455" height="650" src="http://www.mijndomein.nl">
</iframe>
</div>
</body>
</html>


Toevoeging op 17/07/2017 22:56:52:

Uncaught DOMException:

is daar omheen te bouwen?
Want is hetzelfde domein, dezelfde map.
 
PHP hulp

PHP hulp

13/12/2019 04:35:41
 
Danny von Gaal

Danny von Gaal

18/07/2017 22:37:18
Quote Anchor link
Hallo Hans,

Als ik je goed begrijp wil je dat formdiv verdwijnt na 5 secondes? Je kan bijvoorbeeld in CSS een nieuwe class aanmaken en dit op display: none zetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
.formstyle {
  display: none;
}


Vervolgens kan je dit met javascript weer toevoegen aan de div na 5 secondes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
window.setTimeout(function(){
    document.getElementById('formdiv').className += ' formstyle';
}, 5000);


Ik heb een fiddle voor je aangemaakt zodat je kan zien hoe het werkt: https://jsfiddle.net/9uov1na3/.
Je hebt tevens teveel sluitende tags in je html document staan dat heb ik ook opgeschoond.
 
Hans De Ridder

Hans De Ridder

18/07/2017 23:15:20
Quote Anchor link
Dank voor je reactie.
Ik was uiteindelijk ook al op deze oplossing gekomen.
Ik had gekeken wanneer de iframe volledig geladen is.
En dan na 5 seconden de div sluiten.
Maar het ligt iets ingewikkelder helaas.
In het iframe wordt een form geplaatst.
Als die gesubmit wordt verschijnt een bedankmelding.
En die moet na 5 seconden de div laten verdwijnen.
Of een functie starten.
Maar ik heb nog niet kunnen ontdekken hoe je te weten komt
welke pagina geladen is. Of dat je het herladen kunt vangen.
Want de src blijft de oorspronkelijke ifame pagina tonen.
Dus zou je eigenlijk moeten denken aan een functie vanuit de ingeladen bedankpagina.
Die dan een functie aanstuurt in de toppagina.
En daar komen de uitzonderingsregels van de browsers..
 
Willem vp

Willem vp

19/07/2017 10:16:51
Quote Anchor link
Een iframe is een min of meer geïsoleerd element, en 'denkt' dus dat het het top-element is. Het is dan ook niet mogelijk om iets te doen met de properties van de bovenliggende pagina.

Nou ja, helemaal onmogelijk is het niet, door een security-bugje. In javascript kun je het object opvragen van de aanroepende pagina: window.opener. Het gevaar daarvan is dat je met window.opener.location de aanroepende pagina kunt redirecten (naar een phishing-website bijvoorbeeld; daarom moet je nooit zomaar een willekeurige pagina in een iframe inladen). Maar wellicht zou iets als dit ook kunnen werken:

window.opener.document.getElementById('formdiv').style.display = 'hidden';

Geen garantie voor succes overigens, want het zou best kunnen dat je browser dergelijke properties read-only maakt. En je ziet steeds vaker dat webservers een Referrer-Policy header toevoegen, waardoor het opener-object undefined blijft.
 
Hans De Ridder

Hans De Ridder

19/07/2017 11:04:57
Quote Anchor link
Het is wel mogelijk om vanaf de top-pagina een iframe element te triggeren.
Andersom zou zoiets dan toch ook mogelijk zijn.
Wanneer je een verandering van de inhoud van het iframe kunt detecteren is dat in principe ook een mogelijkheid.
Onderstaand script triggert een element in een iframe.

http://www.3till7.net/2014/08/09/triggering-events-in-an-iframe/index.html
Gewijzigd op 19/07/2017 11:05:52 door Hans De Ridder
 
Ben van Velzen

Ben van Velzen

19/07/2017 11:38:19
Quote Anchor link
>> Het is wel mogelijk om vanaf de top-pagina een iframe element te triggeren.
>>Andersom zou zoiets dan toch ook mogelijk zijn.

Het een is geen logisch gevolg van het andere, gezien het aanroepen van scripts in een iframe geen beveiligingsrisico is, maar vanuit het iframe naar buiten wel.

Ik zou zelf ook geen gebruik maken van iframes, het levert geen enkele meerwaarde. Wanneer je zaken wilt doen zonder de omringende pagina te refreshen kun je beter kijken naar een javascript oplossing (AJAX). Als het puur om een layouttechnische zaak gaat los je het met CSS op.
Gewijzigd op 19/07/2017 11:41:14 door Ben van Velzen
 
Mitch PHP

Mitch PHP

19/07/2017 18:00:52
Quote Anchor link
Je kunt de div die om het iframe zit relative positioneren en het iframe absolute. Vervolgens kun je in dezelfde div een bedank bericht plaatsen en ook absolute gepositioneerd maken. Vervolgens kun je met z-index bepalen welke div boven en welke onder komt (form of bedankbericht). Vervolgens kun je met javascript de z-index aanpassen als er op de verstuur knop geklikt is.

Wat mooier is is om met PHP een bestand te maken waar het form inzit en die te includen in je pagina. Dan kun je in dat bestand ook een bedankbericht kwijt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.