[dhtml & flash] onload van .swf omzeilen

Pagina: 1
Acties:

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Topicstarter
Helleu :)

Ik zit met het volgende probleem:
Ik heb een aantal pagina's met daarin verschillende flash-filmpjes. In deze flash filmpjes zitten preloadertjes. Maar die preloadertjes hebben niet erg veel effect op het onload event van de body van de html. Het punt is dat ik die preloaders niet voor niks in de flash heb zitten en daarom al e.e.a. in de onload van de body (javascript) uit wil voeren tijdens het laden van de flash en niet pas daarna.

Om het even te illustreren kun je op http://test.yoursite.nl/flash/flash.html kijken. in de onload van body staat alert ( 'woei' ).
Natuurlijk doet hij het na een refresh wel goed omdat de zooi dan in je cache staat.

Wat heb ik geprobeerd?
[list=I]• Pas in de body.onload de Flash te laden door middel van DOM
(dmv. getElementById () de <param> en de <embed> src aanpassen
Dit werkt niet, want de embed en param - elementen "bestaan niet" als ik ze ophaal met getElementById () (:? 8)7)

De DOM tree voor de object en embed zelf opbouwen
createElement, setAttribute en appendChild
Werkt niet, want ik mag van IE geen <embed> als child van een object appenden (:?)

In de body.onload de Flash laden met innerHTML
Werkt in IE6 (xp) maar niet in (verrassend genoeg) IE5 mac en Mozilla. Mozilla is niet zo heel erg belangrijk, maar IE5 mac wel :/


Het enige wat ik nog kan doen is de flash movies in een andere pagina "alvast" laden, maar eerlijk gezegd vind ik het niet zo netjes om van mensen die bijvoorbeeld alleen de homepage bekijken de verbinding dicht te trekken met flash filmpjes van een andere pagina's.

Wie o wie heeft er een oplossing voor dit probleem? :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

hier krijg ik de onload event al als de preloader er is (dus als ie de eigenlijke flash aan het laden is), da's toch wat je wilt of begrijp ik je verkeerd om?

wil je nou eerst de complete flash en dan het onload event? of als alles wat op die pagina staat ingeladen is (de preloaders dus), want dat is het gedrag wat je van onload verwacht.

(misschien maakt het wel uit: w2000 ie6)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

je kan javascript toch ook gewoon in de body zetten, desnoods voor de </body>? Dan wordt het al uitgevoerd tijdens het parsen.

at I & II: embed is deprecated, en Mozilla en Opera kunnen ook prima met het object element overweg; mogelijk moet je wel wat javascript gebruiken om die elementen on the fly op de juiste manier te schrijven (tip: vraag window.ActiveXObject uit ;) ) - of is NS4 support belangrijk?

at III: innerHTML is in de meeste browsers anders dan IE gewoon buggy; zeker voor dit soort toepassingen zou ik het niet gebruiken.

[ Voor 60% gewijzigd door crisp op 28-08-2003 10:18 ]

Intentionally left blank


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Topicstarter
mophor:
hier krijg ik de onload event al als de preloader er is (dus als ie de eigenlijke flash aan het laden is), da's toch wat je wilt of begrijp ik je verkeerd om?
Waarschijnlijk is dat bedrieglijk omdat het redelijk kleine flash filmpjes zijn en je een snelle verbinding hebt? De preloader "faked" een heel klein beetje preloading voor het mooi.
wil je nou eerst de complete flash en dan het onload event? of als alles wat op die pagina staat ingeladen is (de preloaders dus), want dat is het gedrag wat je van onload verwacht.
Eigenlijk interesseert het me niet of de flash geladen is of niet op het moment van "onload" van body, daar komt het feitelijk op neer. Of het verder goed gaat met laden enzo, dat zoekt flash wel voor me uit.
(misschien maakt het wel uit: w2000 ie6)
Zou kunnen.


crisp:
je kan javascript toch ook gewoon in de body zetten, desnoods voor de </body>? Dan wordt het al uitgevoerd tijdens het parsen.
Mja, maar de rest van de content moet wel al gerenderd en geladen zijn (incl plaatjes)
at I & II: embed is deprecated, en Mozilla en Opera kunnen ook prima met het object element overweg; mogelijk moet je wel wat javascript gebruiken om die elementen on the fly op de juiste manier te schrijven (tip: vraag window.ActiveXObject uit ;) ) - of is NS4 support belangrijk?
NS4 :? Wat is dat :? ;)

IE5 mac is belangrijk. Daar werken ze allemaal op. Mozilla is niet zo erg belangrijk, maar natuurlijk wel netjes als het daar in werkt. Ik zal 'ns kijken of ik iets kan met ActiveXObject.
at III: innerHTML is in de meeste browsers anders dan IE gewoon buggy; zeker voor dit soort toepassingen zou ik het niet gebruiken.
Ik vermijd het doorgaans ook, maar als het dan wel had gebleken te werken was het toch een prima oplossing geweest (in de trant van: niet netjes, maar werkt wel).

edit:

Zal ook even kijken of ik met dit linkje van oh,when? iets kan

[ Voor 4% gewijzigd door drm op 28-08-2003 10:25 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Je kan al je andere content preloaden dmv js en zodra dit gebeurt is je onload actie uitvoeren.

Niet getest, maar lijkt me een oplossing.

Huur mij in als freelance SEO consultant!


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Beetje smerig misschien maar waarom gebruik je geen iframe voor Flash content en laad je daar pas de Flash in als de rest van de pagina is geladen?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Topicstarter
McVirusS:
Beetje smerig misschien maar waarom gebruik je geen iframe voor Flash content en laad je daar pas de Flash in als de rest van de pagina is geladen?
Dat is dus het lullige, het staat al in een iframe :)

Maar, de iframe heeft ook een onload event. En de body wacht met firen van zijn onload totdat alle childelements geladen zijn (hun onload gefired is). Kortom -> da's geen oplossing :)

edit:
Maar het lijkt erop dat oh,when?'s oplossing wel een goeie is...

[ Voor 8% gewijzigd door drm op 28-08-2003 11:06 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
drm schreef op 28 August 2003 @ 11:05:
[...]
Dat is dus het lullige, het staat al in een iframe :)

Maar, de iframe heeft ook een onload event. En de body wacht met firen van zijn onload totdat alle childelements geladen zijn (hun onload gefired is). Kortom -> da's geen oplossing :)
Hmm, ik bedoelde eigenlijk dat je eerst een leeg iframe laad zodat de onload van main window gefired wordt en daarna in de onload van mainwindow zorgen dat de Flash geladen wordt in het iFrame.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Topicstarter
McVirusS:
Hmm, ik bedoelde eigenlijk dat je eerst een leeg iframe laad zodat de onload van main window gefired wordt en daarna in de onload van mainwindow zorgen dat de Flash geladen wordt in het iFrame.
Ah op die fiets. Nee dat is inderdaad niet echt een frisse oplossing ;)

De oplossing van oh,when? daarentegen works like a charm.

Even een korte uitleg van die oplossing: Je hebt een swf'je (zeg: loader.swf) waar enkel een stukje actionscript in staat die zorgt voor het laden van een andere movie. De browser denkt bij het laden van loader.swf dat de swf klaar is, en fired het onload event. Precies wat ik wilde dus :)

Eveneens heb ik het embed object geditched en vervangen door een alternatief plaatje, en de classid vervangen door een type="mimetype" aanduiding.

Resultaat:
HTML:
1
2
3
4
5
6
7
8
9
10
11
<object 
   type="application/x-shockwave-flash" 
   data="./gfx/loadmovie.swf?path=gfx/home.swf" 
   width="266" height="144"
>
   <param name="bgcolor" value="#ffffff" />
   <param name="menu" value="false" />
   <param name="movie" value="./gfx/loadmovie.swf?path=gfx/home.swf" />
   
   <img src="./gfx/alternative-home.jpg" width="266" height="144" alt="" />
</object>

Keurig compacte html en werkt in alle bedoelde browsers. \o/

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

dan toch maar ff replyen anders lijkt het alsof ik via mind-control drm mee heb geholpen... ;)

"You're only as good, as what you did last week."


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 02:40

Pelle

🚴‍♂️

Inderdaad, dat was ook mijn eerste gedachte. Een leeg iframe, en waar je middels de onLoad van de body van het parent document pas de content in zet. Enige nadeel is dan wel dat eerst heel je pagina wordt geladen, en daarna pas wordt begonnen aan je flash filmpjes.

/edit
Ik reageerde op McV :)

[ Voor 6% gewijzigd door Pelle op 28-08-2003 11:23 ]

Pagina: 1