Vanaf iframe inhoud naar functie in top pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

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

22/12/2024 11:16:38
 
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.