Vanuit popup terug naar hoofdwindow

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb weer eens iets doms gedaan :D Iemand had een pagina die al tig jaar goed werkte en nu 'ineens' werkt het niet meer. Dus ik zo: Ja joh ik fix het wel ff easy, maar ik krijg het helaas niet gefixed :(

Het probleem is het volgende:

Vanuit een pagina wordt een popup geopend en vanuit die popup wil ik weer terug naar m'n hoofdwindow. Het probleem is dat de popup een externe pagina is waar ik dus 0.0 mee kan doen.

Nu werkt dit al jaren zo: (ultra kort voorbeeldje, het gaat om het principe)

HTML:
1
2
3
4
5
6
<script type="text/javascript">
self.name='popopener';
</script>
<form target="_popwindow">
<input type="submit">
</form>


In de popup is er dan zoiets:

HTML:
1
2
3
<form target="popopener">
<input type="submit">
</form>


Maar volgens mij werkt dit in geen enkele fatsoenlijke browser dus ik heb het vermoeden dat dit al een tijdje langer niet meer werkt. Ik zou alleen geen idee hebben hoe ik dit kan fixen zonder de code in het popup venster te veranderen, helaas is dit dus een externe pagina (minstens zo oud als de pagina die ik probeer te fixen).

Ik heb al wat javascript zitten proberen maar volgens mij werkt dit hele principe gewoon niet op nieuwere browsers of heb ik het mis?

Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

je hebt het fout, kijk eens naar het object opener.document :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
moto-moi schreef op woensdag 22 april 2009 @ 06:36:
je hebt het fout, kijk eens naar het object opener.document :)
Nee, volgens mij lost dat het probleem niet op. Dat zou toegepast moeten worden in de popup, maar die kan ik dus niet wijzigen zoals ik al zei.

Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Toch zul je het in de popup moeten oplossen, want daar gaat het fout. In principe kun je gewon window.close() aanroepen om je popup te sluiten. Daaraan voorafgaand zou je nog iets als window.opener.focus() kunnen proberen, maar ik kan me voorstellen dat browsers het vanuit-script-focussen-van-windows blokkeren, zeker als het op een ander domein draait.

Tenminste, ik denk dat je dat wilt. Het is nml niet gespecificeerd wat een incorrecte form-tag (dus zonder action attribuut) hoort te doen - of die de popup dus hoort te sluiten en naar welke url hij moet posten. Aan je code is dus niet zo 1-2-3 het gewenste gedrag af te lezen...

De mooiste oplossing is natuurlijk een lightbox/thickbox/facebox, een popover dus, met daarin een iframe.

[ Voor 4% gewijzigd door _Thanatos_ op 22-04-2009 23:58 ]

日本!🎌


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De popup sluit wel hoor, daar zit wel een javascriptje voor erin, maar dat is hier niet echt relevant. Wat er dus moet gebeuren is dat er op de originele window een submit moet plaatsvinden. De submit werkt prima, maar deze gaat naar een nieuw venster toe en niet naar het originele venster (tenminste in normale browsers, oudere browsers IE6 en eerder werken wel op de hoofdwindow weer).

Via javascript in de popup is dit heel erg simpel op te lossen, maar ik kan dus niets veranderen aan de popup.

Het gewenste gedrag lijkt me in de code vrij duidelijk en het staat ook in de tekst. Ik open een popup en vanuit die popup moet de gebruiker weer terug gaan naar het hoofdwindow. Het sluiten van de popup is niet zo boeiend dat werkt altijd wel (en stelt ook niets voor) maar de submit gaat dus naar een nieuw venster ipv het originele venster.

In de echte code zit er wel een action attribuut in de forms, maar ook dit is niet echt relevant in dit voorbeeld, het gaat meer om het principe.

Acties:
  • 0 Henk 'm!

  • IntToStr
  • Registratie: December 2003
  • Laatst online: 21:06
Communicatie tussen een popup en het hoofdscherm is eigenlijk alleen mogelijk als ze in hetzelfde domein leven. De same origin policy waar alle moderne browsers mee werken zorgt ervoor dat je niets meer met die opener, etc. properties kunt doen.

Als er wordt verwezen naar een window.name zal die niet gevonden worden in de windows binnen hetzelfde domein en dus een nieuw window openen. Dit gedrag zie je ook regelmatig bij iDeal betalingen etc.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat dacht ik dus ook.

Maar dan is het duidelijk, het gaat gewoon niet werken op deze manier.
Pagina: 1