[JS] frames: onload event attachen na window.location=

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Ik heb een vervelend probleem. Wat ik wil is tweeledig:

1) Een document in een ander frame laden
2) Een Javascript-functie uitvoeren in dat document, zodra het document geladen is.

Dit werkt in ieder geval niet:

JavaScript:
1
2
3
4
5
//load document
oFavoritesTargetFrame.location = sTargetUrl;

//scroll the document
oFavoritesTargetFrame.window.scroll(0, sTargetFrameVerticalScrollPos);


want hij scrollt dan eerst (in oFavoritesTargetFrame staat namelijk al een document), en gaat vervolgens de nieuwe pagina laden. Ik wil dus dat Javascript wacht met de scroll-functie, totdat het nieuwe document geladen is.

(voor de slimmerds onder ons, dit werkt dus ook niet:

JavaScript:
1
2
3
4
5
//load document
oFavoritesTargetFrame.location = sTargetUrl;

//scroll the document
oFavoritesTargetFrame.onload = function(){window.scroll(0, sTargetFrameVerticalScrollPos)};


want de onload wordt aan het oude document gehangen, waarna de nieuwe pagina eroverheengeladen wordt zonder onload event).

Hoe dit op te lossen? Alle pagina's staan op het zelfde domein (eigen server).

Acties:
  • 0 Henk 'm!

  • -db-
  • Registratie: Februari 2003
  • Laatst online: 20-09 00:51

-db-

Hoi

Kun je die onload niet in de body van het in te laden document zetten

Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
-db- schreef op vrijdag 20 juni 2008 @ 16:50:
Kun je die onload niet in de body van het in te laden document zetten
Zou kunnen ja, maar ik wacht met die oplossing (ik wil eigenlijk een oplossing die onafhankelijk is van het te laden document, bovendien kan het document ook alleen een plaatje zijn zonder HTML).

Acties:
  • 0 Henk 'm!

  • -db-
  • Registratie: Februari 2003
  • Laatst online: 20-09 00:51

-db-

Hoi

Dan kan je ajax gebruiken, kun je triggeren op readyState

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Als de pagina in de iframe van een andere server komt, dan kan je volgens mij met JS daarin niks aanpassen. Zelfs als het op dezelfde server draait, mag dat misschien niet (weet ik niet zeker). Anders heb je een behoorlijk lek (denk aan cookies stelen bijvoorbeeld).

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • -db-
  • Registratie: Februari 2003
  • Laatst online: 20-09 00:51

-db-

Hoi

Zelfde domein zegt hij, dus dan is dat geen probleem.

Acties:
  • 0 Henk 'm!

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

_Thanatos_

Ja, en kaal

Misschien krijg je het opgelost met DOMContentLoaded. Hoewel die eerder gefired wordt dan onload, zou het best es kunnen werken. Wie weet.

Anders, als het alleen om scrollen gaat, waarom niet gewoon een hash in de url gebruiken? Is nog accessible ook.

[ Voor 3% gewijzigd door _Thanatos_ op 22-06-2008 03:49 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Bedankt allemaal!

Ik wilde proberen om het zo simpel mogelijk te maken (dus niet met hashes, want in de targetFrame kan ook een plaatje geladen zijn).

Mijn (nog niet geprobeerde) oplossing in pseudocode

Kijk of targetFrame al sTargetUrl heeft
Zo ja: scroll naar juiste positie, einde
Zo nee: oFavoritesTargetFrame.location = sTargetUrl en zet timeout (1 sec) op functie handleDocumentLoaded
functie handleDocumentLoaded wordt uitgevoerd: kijk of targetFrame al sTargetUrl heeft
Zo ja: scroll naar juiste positie, einde
Zo nee: zet timeout (1 sec) op functie handleDocumentLoaded

Volgens mij moet dit gaan werken zo :)
Pagina: 1