Javascript 在IE6中嵌入带有jQuery的YouTube视频,而不使用SWFObject

Javascript 在IE6中嵌入带有jQuery的YouTube视频,而不使用SWFObject,javascript,jquery,flash,video,internet-explorer-6,Javascript,Jquery,Flash,Video,Internet Explorer 6,这是我的密码: <!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('<obj

这是我的密码:

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

$(文档).ready(函数(){
$(“#视频”).html(“”);
});
它可以与Firefox和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似乎忽略了
标记,下面是它嵌入的代码

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

有解决办法吗


谢谢。

除了使用SWFObject,您还必须手动检测IE,然后使用

<embed>
见: 用于嵌入和对象属性

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

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

var isMSIE = /*@cc_on!@*/false;
if(isMSIE)
{
 //use embed tag
}
else
{
 //use object
}
<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>

您寻找的解决方案将以您编写swfobject的等效对象而结束,除非它不会得到很好的测试或执行。既然有一个非常好的现有解决方案,特别是当它只有10KB的小型化时,为什么还要重新发明轮子呢?如果不添加另一个http请求,那么为什么不将swfobject代码滑流到页面或另一个js文件中呢


我从不使用swfobject以外的任何东西来嵌入flash

这有点奇怪,因为最初对象标记是由MS引入的,用于嵌入flash对象

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

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
    <param name="movie" value="myContent.swf" />    
</object>


对于嵌入或对象标记,有时需要使用DOM createElement和insertBefore或appendChild方法,而不是简单地使用document.write写出html。当您使用DOM方法时,它将通知浏览器正在动态添加新元素,并且浏览器应该对其进行处理以将其转换为插件对象。请看我调整Silverlight对象大小并将其插入现有HTML文档中所做的操作。

谢谢,您能详细说明一下吗?嵌入的代码是什么?我刚刚试着在我的问题中嵌入最后一个代码块,但它不起作用。@metrobalderas,这应该适用于IE6。你有什么问题。。AAA和Metrobalderas凭借其好听的格言赢得了本世纪的低调陈述奖:“IE6有点不太对劲”。@nickf当然,“我们已经加载了一堆JS文件,我们不想要更多”这句话也应该值得一些奖励。不过,这可能不是一个令人满意的问题。@bzlm显然metrobalderas在给页面增加.js文件负担方面遇到了某种无形的障碍。+1用于思考:]补充回答:您甚至可以将所有js文件放在一起,并通过PHP将其作为单个Gzip js文件输出