[JavaScript] Frame refreshen

Pagina: 1
Acties:

  • Harm
  • Registratie: Mei 2002
  • Niet online
Ik heb Google en GoT al doorzocht, maar het lukt me niet om een antwoord te krijgen op de volgende vraag. Er wordt wel veel gesproken over het refreshen van frames, maar dat is telkens het frame van waaruit het linkje komt en dat zoek ik niet. :(

Ik heb op dit moment een pagina met daarin een i-frame, die weer een pagina bevat met daarin drie frames. Bovenin zweeft een frame genaamd 'boven', onder dat frame zweven twee frames, waarvan de linkse 'links' heet en de rechtse 'midden2'. Like this: :)
code:
1
2
3
4
5
6
7
--------
|      |
|------|
| |    |
| |    |
| |    |
--------

Nu is het zo dat er via het bovenste frame een pop-up geopend wordt waarmee je wat instellingen kunt wijzigen. Zo moet het mogelijk worden om vanuit dat pop-upje (wat dus voortkomt uit 'boven') het frame 'links' te laten refreshen. Maar hoe?
Als je deze code gebruikt, dan werkt het niet op de juiste manier, omdat er dan in het 'boven' frame gewijzigd wordt.
code:
1
parent.window.opener.location = "http://www.test.nl/";

En ook deze code doet het niet:
code:
1
parent.window.opener.reload();

Als ik nu één van deze mogelijkheden 'ombouw' zodat er -volgens mij- verwezen wordt naar 'links' als frame, dan werkt het alsnog niet.
code:
1
parent.window.links.location = "http://www.test.nl/";

Maar waarom werkt dit niet? Wat zie ik over het hoofd?

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 18:12

RM-rf

1 2 3 4 5 7 6 8 9

opener is het object waarmee je het window-object warvanuit de window.open() is aangeroepen aanspreekt.
parent.window is gewoon het popupvenster zelf en de opener het 'boven'-frame

code:
1
parent.window.opener.parent.frames['links'].reload();
zou het wel moeten doen

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

reload is een functie van document.
En document komt na frames[] of window.
Dus

window.opener.frames['links'].document.location.refresh();
Zou zo moeten denk ik

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 18:12

RM-rf

1 2 3 4 5 7 6 8 9

XLerator schreef op 29 september 2002 @ 00:49:
reload is een functie van document.
En document komt na frames[] of window.
Dus

window.opener.frames['links'].document.location.refresh();
Zou zo moeten denk ik
klopt je hebt bijna gelijk, de reload() is een method van het location-object.
daty kan je aanspreken via de window, de document werkt ook, echter dit wordt afgeraden (deprecated)
aangezien je bij frames al direct de window-objects aanspreekt is het gebruik van document overbodig en ongewenst, verder zou openenr niet direct naar de juiste frameset verwijzen, echter naar het 'boven'-frame, daarom is het van belang de parent aan te roepen:

de eerste parent.window.opener is overigens enkel van nut als dit geopende window zich in een frameset bevind, en zelfs dan voldoet parent.opener, of eigenlijk top.opener al en beter.

ik kom nu uit op:
code:
1
top.opener.parent.frames['links'].location.refresh();

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Harm
  • Registratie: Mei 2002
  • Niet online
En geen van beide mogelijke scriptmogelijkheden doen het. :( Als ik het scriptje in m'n HTML zet en op de knop drukt, gebeurt er niets terwijl er toch wel wat zou moeten veranderen. Het aanroepen van het stukje script gaat via een onclick event:
code:
1
onclick="refresh()"

Waarbij 'refresh' de naam is van de JS functie. :)

Hebben jullie niet sites met wat informatie hierover waarop ik zelf kan gaan snuffelen? Zoals gezegd, heeft Google mij niet veel zinnigs gebracht op dit punt.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 18:12

RM-rf

1 2 3 4 5 7 6 8 9

ramH schreef op 29 september 2002 @ 01:13:
En geen van beide mogelijke scriptmogelijkheden doen het. :( Als ik het scriptje in m'n HTML zet en op de knop drukt, gebeurt er niets terwijl er toch wel wat zou moeten veranderen. Het aanroepen van het stukje script gaat via een onclick event:
code:
1
onclick="refresh()"

Waarbij 'refresh' de naam is van de JS functie. :)

Hebben jullie niet sites met wat informatie hierover waarop ik zelf kan gaan snuffelen? Zoals gezegd, heeft Google mij niet veel zinnigs gebracht op dit punt.
developer.irt.org, of kijk naar de javascript-documentatie op netscape, msdn.miscrosoft.com/Library brengt ook een hoop

maar je kunt dat waarschijnlijk besparen door je functie "my_refresh()" te noemen, refresh is al de naam van een standaard method en die kan je niet zomaar dubbel gebruiken.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Harm
  • Registratie: Mei 2002
  • Niet online
RM-rf schreef op 29 september 2002 @ 01:03:
[...]

*knip* weg met die theorie :+ ;)

ik kom nu uit op:
code:
1
top.opener.parent.frames['links'].location.refresh();
Ennieweej, ik heb deze ook uitgeprobeerd en toen deed ie het niet. Dus ik nog even spelen en nadat ik het woordje refresh had veranderd in reload deed het het ineens wel!
Dit is wat ik nu gebruik:
code:
1
top.opener.parent.frames['links'].location.reload();

Er gaat nog wel wat fout met refreshen, maar dat los ik zelf wel op. :) Het is namelijk de bedoeling dat er na het klikken op de knop een form gesubmit wordt naar een DB en dat er dan iets wordt gewijzigd in de DB. Door die wijziging moet het frame opnieuw geladen worden omdat de inhoud is gewijzigd. Dit gebeurt nu nog te vroeg, de wijzigingen zijn nog niet verwerkt in de DB. Maar dat gaat wel goedkomen denk ik. :P
Heel erg bedankt!
Pagina: 1