Noch so ein Kandidat für “einmal aufgeschrieben, damit man es niewieder vergisst”:
Viele Nutzer von SWFAddress stolpern über das Problem, dass zwar aus Flash Änderungen im Browser gesetzt werden können, aber das manuelle Ändern der Adressleiste des Browsers oder Klick auf Vor/Zurück keine Reaktion hervorrufen. Drei goldene Regeln gibt es bei der Verwendung von SWFAddress zu beachten:
- Einbettung der JS-Dateien in festgelegter Reihenfolge: die swfaddress.js sollte IMMER zum Schluss eingebettet werden. Also zum Beispiel erst SWFObject, dann SWFMacMousewheel, dann SWFAddress.
- SWFAddress korrekt initialisieren: SWFAddress besitzt eine onInit-Methode (bzw. wirft das SWFAddressEvent.INIT), erst nachdem diese aufgerufen wurde sollte mit der Verwendung von SWFAddress begonnen werden
- Die Object-ID muss beim Einbetten der SWF immer gesetzt sein: für SWFObject bedeutet das, dass man nach den Flashvars und Parametern noch ein weiteres sogenanntes attributes-Objekt übergibt, in dem die Werte id und name auf die ID des Containers gesetzt sind, in den die Flashdatei geschrieben werden soll.
Insgesamt sieht eine erfolgreiche Einbettung einer Flashdatei mit SWFObject, SWFAddress und SWFMacMousewheel dann so aus:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>SWFAddress Beispiel</title> <script type="text/javascript" src="js/swfobject.js"></script> <script type="text/javascript" src="js/swfmacmousewheel2.js"></script> <script type="text/javascript" src="js/swfaddress.js"></script> </head> <body> <div id="launcher"> <div class="maincontainer"><a target="_blank" href="http://www.adobe.com/de/products/flashplayer/"><img src="media/images/flash_fallback.jpg" alt="No Flash Fallback" title="No Flash Fallback" /></a></div> </div> <script type="text/javascript"> var flashvars = { }; swfobject.embedSWF('setup.swf', 'launcher', '100%', '100%', '10.0.0', 'js/expressinstall.swf', flashvars, {bgcolor: '#eaeaea', menu: 'false', allowFullscreen:'true', allowScriptAccess:'always', base:''}, {id:'launcher', name:'launcher'}); swfmacmousewheel.registerObject( 'launcher' ); </script> </body> </html>
Kommentar schreiben