2010-05-13 14 views
5

Hallo Ich habe ein Flash-Menü mit ein paar Links, aber wenn der Benutzer angemeldet ist, möchte ich das Menü von menu1 zu menu2 ändern ... so dass es "Mein Konto" statt "Anmeldung"Ändern Flash src mit jquery?

anzeigt

Der Code ist unten für meine flash:

<div id="menu"> 
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="825" height="69" id="menu1" align="middle"> 
<param name="allowScriptAccess" value="sameDomain" /> 
<param name="allowFullScreen" value="false" /> 
<param name="movie" value="menu1.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="#ffffff" /> <embed src="menu1.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="825" height="69" name="menu1" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 
</object> 
</div> 

Php:

if (loggedin()) 
{ 

    echo '<script type="text/javascript"> 
    CHANGE FLASH LINK HERE 
    </script>'; 


} 

Könnte dies ohne getan werden alle oben genannten Code wieder heraus zu schreiben?

Thanks :)

Antwort

6

Verwenden .attr():

$(document).ready(function() { 
    $("#menu > object > embed").attr("src", "new link"); 
}); 
+0

Danke das war einfach! : D Anscheinend muss ich 6 Minuten warten, um dies als Antwort zu akzeptieren..haha – Elliott

0

Wenn loggedin() eine Last Zeitprüfung auf der Server-Seite getan, warum nicht einfach die Ausgabe von PHP ändern?

<div id="menu"> 
    <?php if (loggedin()) { ?> 
     <object ...> ... 
      <param name="movie" value="menu2.swf" /> ... 
     </object> 
    <?php } else { ?> 
     <object ...> ... 
      <param name="movie" value="menu1.swf" /> ... 
     </object> 
    <?php } ?> 
</div> 

Wenn Sie es wirklich aus Skript tun müssen, dann ja, dann sollten Sie ein neues Flash-Objekt erstellen (von innerHTML oder DOM-Methoden, oder ein Skript wie SWFObject bekommen es für Sie zu tun). Das Ändern der Quelle eines Plugin-Objekts kann nicht zuverlässig über den Browser (insbesondere IE) erfolgen.

Es könnte besser sein, beide Menüs auf der Seite einzubinden und einfach display zu verwenden, um eine davon zu verstecken.

Es wäre fast sicher besser, keine Flash-Menüs zu verwenden, die eher ein Usability-, Accessibility- und SEO-Desaster sind. Sie haben eine Menge an Animationsmöglichkeiten in jQuery integriert und HTML5/CSS3/etc ist zunehmend in der Lage, schöne Effekte zu erzielen. Flash-Menüs sind so 2003.