2010-05-13 7 views
5

Salut J'ai un menu flash montrant quelques liens, mais lorsque l'utilisateur est connecté, je veux changer le menu de menu1 à menu2 ... de sorte qu'il affiche "Mon compte" plutôt que "Inscription"Modifier le flash src avec jquery?

le code ci-dessous pour mon 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>'; 


} 

cela pourrait-il être fait sans avoir à écrire tout le code ci-dessus à nouveau?

Merci :)

Répondre

6

Utilisez .attr():

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

Merci c'était facile! : D Apparemment, je dois attendre 6 minutes pour accepter cela comme réponse ..haha – Elliott

0

Si loggedin() est un contrôle de charge le temps fait sur le côté serveur, pourquoi ne pas simplement changer la sortie de PHP?

<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> 

Si vous devez vraiment le faire à partir du script alors oui, vous devez créer un nouvel objet Flash (par innerHTML ou méthodes DOM, ou d'obtenir un script comme SWFObject de le faire pour vous). Changer la source d'un objet plugin n'est pas quelque chose que vous pouvez faire de manière fiable avec un navigateur croisé (en particulier IE).

Il peut être préférable d'inclure les deux menus sur la page et d'utiliser display pour masquer l'un d'entre eux.

Il serait presque certainement préférable de ne pas utiliser les menus Flash, qui ont tendance à être une catastrophe d'accessibilité, d'accessibilité et de référencement. Vous avez beaucoup de possibilités d'animation intégrées dans jQuery et HTML5/CSS3/etc est de plus en plus capable de jolis effets. Les menus Flash sont alors 2003.

Questions connexes