如何在HTML页面中嵌入SWF文件?

179

如何在HTML页面中嵌入SWF文件?

15个回答

175

将SWF嵌入HTML页面的最佳方法是使用SWFObject

它是一个简单易用且符合标准的开源JavaScript库,用于嵌入Flash内容。

它还提供了Flash播放器版本检测。如果用户没有所需的Flash版本或JavaScript已禁用,则会看到备用内容。您还可以使用此库触发Flash播放器升级。一旦用户升级,他们将被重定向回页面。

以下是文档中的示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>SWFObject dynamic embed - step 3</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="swfobject.js"></script>

    <script type="text/javascript">
        swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0");
    </script>

  </head>
  <body>
    <div id="myContent">
      <p>Alternative content</p>
    </div>
  </body>
</html>

与此同时使用的一个好工具是SWFObject HTML和JavaScript生成器。它可以为您生成嵌入Flash所需的HTML和JavaScript,使用SWFObject进行操作。该工具带有非常简单易用的用户界面,供您输入参数。

强烈推荐这个工具,而且使用起来非常简单。


11
SWFObject很好用,它非常有效。更棒的想法是使用内容分发网络(CDN)获取Javascript。我使用谷歌的https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js。 - Ardee Aram
谢谢您的回答。现在,您能否建议一个播放器,以便可以访问回放功能,并提供在HTML中的工作示例? - Sumit Ramteke
这个程序能在没有安装Flash Player的系统上运行吗?或者它支持所有浏览器? - Mohammed Javed
该项目现已迁移到GitHub:https://github.com/swfobject/swfobject,嵌入swf对象的新技术是`var el = document.getElementById("my-target-element"); swfobject.embedSWF("myContent.swf", el, 300, 120, 10);`。 - Lucky
注意:本答案已经超过10年,非常过时。这在Chrome上不能很好地使用,就像@Chris所提到的那样。请参见一些更好的HTML5答案。它们简单,并且由浏览器供应商直接支持,不需要为您的用户下载swfobject库。 - joshuakcockrell
显示剩余2条评论

130
<object width="100" height="100">
    <param name="movie" value="file.swf">
    <embed src="file.swf" width="100" height="100">
    </embed>
</object>

1
那段代码不符合XHTML标准... <embed>标签不能在<object>标签内。 - Anheledir
59
用户并未要求使用XHTML,而是要求使用HTML。 - Ólafur Waage
3
这篇文章很好地解释了如何嵌入Flash并保持XHTML的有效性。http://yoast.com/articles/valid-flash-embedding/ - Joko Wandiro
3
为什么不在 <object> 元素中使用 data 属性?引用自 w3c html5 文档:至少其中之一的 data 属性或 type 属性 必须 存在。 - vladkras
@JokoWandiro,您提供的链接不幸已经失效。这里有一个存档版本:https://web.archive.org/web/20180602024700/https://yoast.com/must-reads-for-website-seo/valid-flash-embedding/。 - Hermann.Gruber

19

那么使用简单的HTML5标签嵌入怎么样?

<!DOCTYPE html>
<html>
<body>

<embed src="anim.swf">

</body>
</html>

13

这适用于从根环境运行的应用程序。

<object type="application/x-shockwave-flash" data="/dir/application.swf" 
id="applicationID" style="margin:0 10px;width:auto;height:auto;">

<param name="movie" value="/dir/application.swf" />
<param name="wmode" value="transparent" /> <!-- Or opaque, etc. -->

<!-- ↓ Required paramter or not, depends on application -->
<param name="FlashVars" value="" />

<param name="quality" value="high" />
<param name="menu" value="false" />

</object>

可以根据 .swf 文件本身添加/可以添加其他参数。不使用嵌入式(embed),只需在 object 中加入参数即可,因此它仍然有效、可用,并且无论 !DOCTYPE 是什么都没有影响。:)


8
如果您正在使用其中一种js库来插入Flash,我建议在<noscript/>标签内添加普通对象嵌入标记。

8
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/VhtIydTmOVU&amp;hl=en&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" 
style="width:640px;height:480px;margin:10px 36px;">

<param name="movie" value="http://www.youtube.com/v/VhtIydTmOVU&amp;hl=en&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="wmode" value="opaque" />
<param name="quality" value="high" />
<param name="menu" value="false" />

</object>

2
请注意,object>data和movie>value参数是相同的。这段代码适用于任何免费观看和分享的YouTube视频。 - Spooky
3
一般而言,回答问题时最好解释所给的代码,而不仅是把代码扔给提问者。这样可以学习如何处理问题并防止它们在未来再次出现,而非仅仅让问题消失。 - KRyan

2

“点击激活”问题被称为“Eolas激活”,但在IE的实际版本中已经被移除。 - Anheledir

2

如上所述,SWF Object非常出色。UFO也值得一看,关于UFO的更多信息请参考链接。


2
这个方案可行,我有把握!
<embed src="application.swf" quality="high" pluginspage="http://www.macromedia.com/go/getfashplayer" type="application/x-shockwave-flash" width="690" height="430">

1

我知道这是一个旧问题,但这个答案对现在仍然有帮助。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>histo2</title>
        <style type="text/css" media="screen">
        html, body { height:100%; background-color: #ffff99;}
        body { margin:0; padding:0; overflow:hidden; }
        #flashContent { width:100%; height:100%; }
        </style>
    </head>
    <body>
        <div id="flashContent">
            <object type="application/x-shockwave-flash" data="histo2.swf" width="822" height="550" id="histo2" style="float: none; vertical-align:middle">
                <param name="movie" value="histo2.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffff99" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            </object>
        </div>
    </body>
</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接