代码之家  ›  专栏  ›  技术社区  ›  metrobalderas

在不带swfobject的IE6中嵌入带jquery的YouTube视频

  •  6
  • metrobalderas  · 技术社区  · 15 年前

    这是我的代码:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <title></title>
    <script>
    $(document).ready(function(){
    $("#video").html('<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>');
    });
    </script>
    </head>
    <body>
      <div id="video"></div>
    </body>
    </html>
    

    它可以与火狐和Chrome一起使用,但在IE6中有些地方不太对劲。不幸的是,项目的一个需求是支持这个浏览器,所以即使它在IE7中工作,我也需要解决这个问题。

    我知道有swfobject,但我不想使用它(我们已经加载了很多js文件,我们不需要更多)。

    即使这样也不行:

      <script>
    document.write('<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>');
      </script>
    

    似乎IE6忽略了 <object> 标签,这是它嵌入的代码。

    <EMBED src=http://www.youtube.com/v/HPPj6viIBmU&amp;hl=en_US&amp;fs=1&amp; width=480 height=385 type=application/x-shockwave-flash allowfullscreen="true" allowscriptaccess="always"></EMBED>
    

    有解决办法吗?

    谢谢。

    4 回复  |  直到 14 年前
        1
  •  10
  •   micmcg    15 年前

    您寻找的解决方案将以编写swfobject的等价物结束,除非它不会得到很好的测试或执行。为什么要在现有的解决方案非常好的情况下重新设计车轮,特别是当它只有10千B的小型化时?如果您对不添加另一个HTTP请求设置了死区,为什么不将swfobject代码滑入页面或另一个JS文件中呢?

    除了swfobject之外,我从来没有用其他东西来嵌入flash。

        2
  •  1
  •   Phil Rykoff    15 年前

    这有点奇怪,因为最初对象标签是由MS引导嵌入Flash对象的。

    尝试将ClassID参数添加到对象标记中,例如:

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
        <param name="movie" value="myContent.swf" />    
    </object>
    
        3
  •  0
  •   Todd Moses    15 年前

    除了使用swfobject之外,您还必须手动检测ie,然后使用

    <embed>
    

    像这样:

    var isMSIE = /*@cc_on!@*/false;
    if(isMSIE)
    {
     //use embed tag
    }
    else
    {
     //use object
    }
    

    见: http://kb2.adobe.com/cps/127/tn_12701.html 用于嵌入和对象属性。

    我认为嵌入标签的问题在于不能在其中放置flash变量。他们必须进入闪族。上面的链接将阐明如何做到这一点。但是最好的测试方法是赋予它最小的属性,然后添加更多的属性来看看是什么破坏了它。

    IE6的一个简单嵌入标记如下所示:

    <embed src="MyFlashMovie.swf" quality="high" width="320" height="240" name ="MyMovieName" type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/go/getflashplayer">
    </embed>
    
        4
  •  0
  •   Greg Bray    15 年前

    对于嵌入或对象标记,有时需要使用domcreatelement和insertbefore或appendchild方法,而不是简单地使用document.write写出HTML。当您使用dom方法时,它将通知浏览器一个新元素正在被动态添加,并且浏览器应该处理它以将其转换为插件对象。看看这个 bookmarklet 我调整了Silverlight对象的大小并将其插入到现有的HTML文档中。