2010-05-13 62 views
5

嗨我有一個Flash菜單顯示幾個鏈接,但當用戶登錄時,我想將菜單從菜單1更改爲菜單2 ...以便它將顯示「我的帳戶」而不是「註冊」用jquery更改flash src?

下面的代碼是我的閃存:

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


} 

會這樣做,而不必再出來寫所有上面的代碼?

謝謝:)

回答

6

使用.attr()

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

謝謝,這很容易! :D 顯然我必須等6分鐘才能接受這個答案..哈哈 – Elliott 2010-05-13 23:30:23

0

如果loggedin()是在服務器端完成加載時檢查,爲什麼不能簡單地改變從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> 

如果你真的必須這樣做從腳本,然後是的,你應該創建一個新的Flash對象(通過innerHTML或DOM方法,或者得到一個腳本喜歡的SWFObject這樣做對你)。更改插件對象的來源不是可靠的跨瀏覽器(尤其是IE)。

在頁面中包含兩個菜單可能會更好,只需使用display即可隱藏其中一個菜單。

幾乎可以肯定最好不要使用Flash菜單,這往往是一個可用性,可訪問性和搜索引擎優化的災難。 jQuery中內置了很多動畫可能性,並且HTML5/CSS3 /等越來越能夠產生漂亮的效果。閃光菜單是所以 2003.