这是我的代码:
<!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>
它适用于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忽略了<object>
标签,这里是它嵌入的代码。
<EMBED src=http://www.youtube.com/v/HPPj6viIBmU&hl=en_US&fs=1& width=480 height=385 type=application/x-shockwave-flash allowfullscreen="true" allowscriptaccess="always"></EMBED>
有解决方法吗?
感谢。
答案 0 :(得分:10)
您寻找的解决方法将以您编写swfobject的等效项结束,除非它不会经过良好测试或执行。当有一个完美的现有解决方案时,为什么要重新发明轮子,特别是当它只缩小10KB时?如果你没有添加另一个http请求,那么为什么不将swfobject代码整合到页面或另一个js文件中。
我从不使用除swfobject之外的任何东西来嵌入flash。
答案 1 :(得分:1)
这有点奇怪,因为MS最初引入了对象标签来嵌入flash对象。
尝试将classid-parameter添加到object-tag中,例如:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
<param name="movie" value="myContent.swf" />
</object>
答案 2 :(得分:0)
除了使用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 用于嵌入和对象属性。
我认为你的embed标签存在的问题是你不能在其中放置Flash变量。他们必须进入flashvars。上面的链接将阐明如何执行此操作。但最好的测试方法是给它最小的属性,然后添加更多以查看是什么打破了它。
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>
答案 3 :(得分:0)
对于embed或object标签,有时需要使用DOM createElement和insertBefore或appendChild方法,而不是简单地使用document.write写出html。当您使用DOM方法时,它将通知浏览器动态添加新元素,浏览器应处理它以将其转换为插件对象。请参阅我为调整Silverlight对象大小并将其插入现有HTML文档所做的bookmarklet。