【问题标题】:object, param, jquery对象,参数,jQuery
【发布时间】:2010-11-08 01:47:33
【问题描述】:
<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 &lt;embed src=''&gt;(对于 firefox)和第一个 &lt;param&gt;(对于 IE)

我该怎么做?

这适用于嵌入,但我如何在 IE 中处理参数?

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

    var urlconst = 'changed_url';

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

我试过了

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

但这不起作用。

【问题讨论】:

    标签: javascript jquery html flash


    【解决方案1】:

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

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

    【讨论】:

    • 我有 flash,当我点击一些可以更改嵌入的链接时,只需要更改此参数中的参数,但对于“参数”我有一些问题
    【解决方案2】:

    您应该使用放置 url 的变量的名称:

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

    【讨论】:

      【解决方案3】:

      编辑

      我在下面描述的行为仅在特定情况下发生在 IE 中。当对象元素出现在加载的 DOM 中时,我可以更新名为 movie 的 param 元素的值,但对象的状态没有改变。据我所知,该对象不容易刷新。看起来最好的方法是删除对象元素并添加一个新元素。为此,SolutionYogi 建议的 SWFObject jQuery 插件或类似的东西似乎确实是最好的选择。

      原创

      从我在 IE8 中尝试时看到的情况来看,IE 在页面加载时只保留嵌入元素,而不是 object 和 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());
      

      【讨论】:

      • 这很好。我还“向上一”到对象元素,以替换电影参数以及嵌入 src。
      【解决方案4】:

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

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

      或类似的东西... ;)

      【讨论】:

        【解决方案5】:

        我有这样的解决方案:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 1970-01-01
          • 2011-01-06
          • 2015-05-22
          • 1970-01-01
          • 1970-01-01
          • 2015-04-21
          相关资源
          最近更新 更多