对象,param,jquery

时间:2009-07-04 06:29:43

标签: javascript jquery html flash

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

但这不起作用。

5 个答案:

答案 0 :(得分:7)

您是否考虑过使用jQuery SWFObject插件?

http://jquery.thewikies.com/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>');