<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)
我怎么能这样做?
这适用于嵌入但我如何为IE中的param做什么?
$('.link a').click(function() {
var urlconst = 'changed_url';
$(".flash_photo embed").attr({
src: changed_url
});
我试过
$('#pano param:first').val(changed_url)
但这不起作用。
答案 0 :(得分:7)
您是否考虑过使用jQuery SWFObject插件?
答案 1 :(得分: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);
或类似的......;)
答案 2 :(得分:4)
修改
我在下面描述的行为仅在特定情况下在IE中发生。当对象元素出现在加载的DOM中时,我可以更新名为movie的param元素的值,但是对象的状态没有改变。据我所知,对象不容易刷新。看起来最好的方法是删除对象元素并添加一个新元素。为此,似乎SolutionYogi建议的SWFObject jQuery插件或类似的东西可能确实是最好的方式。
ORIGINAL
从我在IE8中尝试这个时看到的,IE在页面加载时仅保留嵌入元素,而不是对象和参数元素。因此,您无法更改该参数的值,因为它不再存在。
所以,如果这得到了:
<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());
答案 3 :(得分:0)
您应该使用放置网址的变量名称:
$('#pano param:first').val(urlconst)
答案 4 :(得分: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>');