是否有标准的复制粘贴方式将SWF安全地放入网页?

时间:2009-09-30 17:02:24

标签: html flash embed

虽然在HTML中嵌入SWF并不太难,但是对于不同的浏览器存在一些细微之处,检测是否安装了Flash等。 为了启用AJAX,可以使用标准的代码块来节省处理所有情况的麻烦......是否有类似的“参考实现”来嵌入涵盖所有基础的SWF?

5 个答案:

答案 0 :(得分:3)

有标准吗?可悲的是没有。 Flash嵌入方法的理想要点是:

  1. 兼容现代浏览器
  2. IE兼容
  3. 兼容古代浏览器
  4. 符合标准
  5. 在IE中支持流式Flash(在整个文件下载之前播放)
  6. 不要重复自己
  7. 允许后备内容
  8. 没有JavaScript依赖
  9. 但是并没有一堆满足所有这些要点的标记。第6点是不可能完全实现的,但有些解决方案比其他解决方案更糟糕。

    关于您可以使用的最简单的标记是经典Flash Satay文章中概述的版本:

    <object type="application/x-shockwave-flash" data="file.swf" width="x" height="y">
        <param name="movie" value="file.swf" />
        (Non-Flash content here)
    </object>
    

    ALA文章抱怨说,如果没有安装,该版本将不会提示用户下载Flash;我个人认为这是一个加分点。但它仍然在第3点和第5点失败。第5点可能或可能不重要:如果您的Flash文件是一个简单的应用程序,媒体播放器或加载器存根它根本没关系,但如果它是一个大动画,它可能是不幸的

    也许第3点不再重要;这些天没有人真正使用Netscape 4或IE4。但如果它对你有用,你需要老式的嵌入式标签。现代浏览器也支持这一点,这意味着您可以将ActiveX方法用于外部对象,因此您可以在IE中进行流式处理:

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="x" height="y">
        <param name="movie" value="file.swf" />
        <embed type="application/x-shockwave-flash" src="file.swf" width="x" height="y" />
    </object>
    

    这是嵌入Flash的“传统”方法。它在第4点和第7点失败,在第6点稍差。

    SWFObject等库使用的第三种方法是使用JavaScript选择在当前浏览器上实例化Flash的最佳方法。这可以达到以上所有要点,当然,除了8之外,有些库通过包括静态对象标记,第6点的交易点8来提供缓解这一点的方法。

答案 1 :(得分:1)

Apple (例如链接)

  

插件将查看的内容   需要嵌入HTML中。最   浏览器使用EMBED标记执行此操作,   但其他人需要OBJECT标签。对于   最大兼容性,你可以调整   你的页面支持两者。

Adobe (例如链接)

  

Internet使用OBJECT标记   Windows上的Explorer和EMBED是   由Netscape Navigator使用(Macintosh   和Windows)和Internet Explorer   (Macintosh)将浏览器指向   加载Macromedia Flash Player。   Windows上的Internet Explorer使用   用于播放Macromedia的ActiveX控件   所有其他浏览器的Flash内容   和平台组合使用   Netscape插件技术发挥   Macromedia Flash内容。这个   解释了需要两个标签。

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
       codebase="http://download.macromedia.com/pub/
                 shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
          WIDTH="550"
         HEIGHT="400"
             id="myMovieName">
    <PARAM NAME=movie VALUE="myFlashMovie.swf">
    <PARAM NAME=quality VALUE=high>
    <PARAM NAME=bgcolor VALUE=#FFFFFF>
    <EMBED href="/support/flash/ts/documents/myFlashMovie.swf"
        quality=high
        bgcolor=#FFFFFF
          WIDTH="550"
         HEIGHT="400"
           NAME="myMovieName"
          ALIGN=""
           TYPE="application/x-shockwave-flash"
    PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
    </EMBED>
</OBJECT>

答案 2 :(得分:1)

Flash嵌入的许多实现似乎都基于SWFObject。这是你要找的那种东西吗?编辑:项目现在托管here

答案 3 :(得分:1)

我建议将SWF Object与所有其他选项进行比较,因为它会生成符合标准的HTML,并且非常容易设置。

答案 4 :(得分:0)

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script> 
<div id="myvideo"></div>
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myplayerid1" };
swfobject.embedSWF("http://www.youtube.com/v/gRvUpoTT-Bo&hl=pt-br&fs=1&enablejsapi=1&playerapiid=myplayerid1&version=3", "myvideo", "425", "344", "8", null, null, params, atts);
</script>

这可能是一种简单的方法..使用js小提琴测试任何代码......这对我做了很多尝试很多事情