2009-07-04 73 views
4
<object width="438" height="280" id="pano" > 
    <param value="url_flash" name="movie" /> 
    <param value="false" name="menu"/> 
    <param value="high" name="quality"/> 
    <param value="#FFFFFF" name="bgcolor"/> 
    <embed width="438" height="280" pluginpage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="pano" bgcolor="#FFFFFF" quality="high" menu="false" src="url_flash"/> 
</object> 

我有这个Flash代码,我要的是,当我点击一些按钮使用jQuery <embed src=''>(适用于Firefox)和第一<param>(用于IE)对象,PARAM,jQuery的

如何改变我可以做到吗?

这适用于嵌入,但我怎么能在IE浏览器中做参数?

$('.link a').click(function() { 

    var urlconst = 'changed_url'; 

    $(".flash_photo embed").attr({ 
     src: changed_url   
    }); 

我试图

$('#pano param:first').val(changed_url) 

但是,这并不工作。

回答

7

你有没有考虑过使用jQuery SWFObject插件?

http://jquery.thewikies.com/swfobject/

+0

我有闪光,只需要改变参数应用在这一个焕我点击一些链接 我可以嵌入但“PARAM”我改变有一些问题 – AlexC 2009-07-04 06:43:23

+0

谢谢,我用这个插件 – AlexC 2009-07-05 06:12:06

0

你应该使用,你已经把URL中的变量名:

$('#pano param:first').val(urlconst) 
4

编辑

我下面所描述的行为只发生在IE在特定情况下。当加载的DOM中存在对象元素时,我可以更新名为movie的param元素的值,但对象的状态不会更改。据我所知,目标不能轻易刷新。看起来最好的方法是删除对象元素并添加一个新元素。为此,看起来像SolutionYogi建议的SWFObject jQuery插件或类似的东西可能确实是最好的方法。

ORIGINAL

从我所看到的,当我尝试了这一点,在IE8,IE只保留嵌入元素的页面加载,而不是对象和param元素。所以你不能改变参数的值,因为它不再存在。

因此,如果这被送达:

<object width="425" height="344"> 
    <param name="movie" 
     value="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&"></param> 
    <param name="allowFullScreen" value="true"></param> 
    <param name="allowscriptaccess" value="always"></param> 
    <embed src="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&" 
     type="application/x-shockwave-flash" 
     allowscriptaccess="always" 
     allowfullscreen="true" 
     width="425" height="344"></embed> 
</object> 

只这将成为在IE DOM:

<embed src="http://www.youtube.com/v/ePXlkqkFH6s&hl=en&fs=1&" 
    type="application/x-shockwave-flash" 
    allowscriptaccess="always" 
    allowfullscreen="true" 
    width="425" height="344"></embed> 

挑选影片在IE更新,我有可能造成IE浏览器重新分析用于嵌入的HTML。以下似乎工作:

var placeHolder = $("<div />"); 
var tempParent = $("<div />"); 
var embed = $("#movieparent embed"); 
embed.replaceWith(placeHolder); 
tempParent.append(embed); 
embed.attr("src", newSrcUrl); 
placeHolder.replaceWith(tempParent.html()); 
5

搜索信息后,似乎您不能动态地动态更改param元素的属性。最简单的方法可能是将元素的HTML拖入一个变量,将其反馈回jQuery,并在其上使用CSS选择器。然后,您可以清除该对象并将其替换为新代码。

var url = (url here); 
var code = $("#embedded").html(); 
var newcode = $("param:first", code).attr("src", url).html(); 
$("#embedded").html(newcode); 

或类似的东西...;)

0

我有这样一个解决方案:

var flashhtml = $("object").html(); 
$('object').before("<div id='mydiv'>... div</div>"); 
$('object').remove(); 
var flashattr = 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="583" height="297">'; 
$('#mydiv').html('<object ' + flashattr + '<param name="wmode" value="transparent">' + flashhtml + '</object>');