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


Answers:


174

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

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

它还提供Flash Player版本检测。如果用户没有所需的Flash版本或禁用了JavaScript,则他们将看到替代内容。您还可以使用此库来触发Flash Player升级。用户升级后,他们将被重定向回页面。

文档中的示例:

<!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 生成器。它基本上会生成使用SWFObject嵌入Flash所需的HTML和JavaScript。带有一个非常简单的UI,供您输入参数。

强烈建议您使用它,并且非常简单。


11
SWFObject很好。它很简单。一个更妙的想法是使用内容分发网络来获取JavaScript。我使用Google的ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
Ardee Aram

我在直接与IE9一起使用对象标记时遇到了问题,但它与swfobject完美配合。
AndyMcKenna 2012年

感谢您的回答。现在,您还可以建议一个播放器以及用于访问播放功能的HTML自身示例。????
Sumit Ramteke

这可以在未安装Flash Player或支持所有浏览器的系统上工作吗?
Mohammed Javed 2015年

现在该项目已移至GitHub:github.com/swfobject/swfobject,嵌入swf对象的新技术是var el = document.getElementById("my-target-element"); swfobject.embedSWF("myContent.swf", el, 300, 120, 10);
幸运

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

1
该代码不是XHTML有效的... <embed>不得位于对象标记内。
Anheledir

59
用户没有说明是XHTML有效的,他要求HTML
奥拉维尔Waage

3
本文对嵌入Flash和有效的XHTML进行了很好的解释。yoast.com/articles/valid-flash-embedding
Joko Wandiro

3
为什么不在<object>元素中使用data属性?引用w3c html5 docs:至少必须存在data属性或type属性之一
vladkras 2014年

@JokoWandiro,您提供的链接很遗憾消失了。这是一个存档版本:web.archive.org/web/20180602024700/https
//yoast.com/…– Hermann.Gruber

17

简单的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。没有内嵌,仅包含对象和参数,因此,它在任何地方都保持有效,可工作和可用,与!DOCTYPE无关。:)


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视频。
诡异的2012年

3
通常来说,答案是可取的,以解释它们给出的代码,而不是仅仅将代码放到询问器上。目的是了解问题并在将来防止它们发生,而不是使它们消失。
KRyan 2012年

7

如果您使用这些js库之一插入Flash,则建议在中添加普通对象embed标签<noscript/>




2

我敢肯定,这将工作!

<embed src="application.swf" quality="high" pluginspage="http://www.macromedia.com/go/getfashplayer" type="application/x-shockwave-flash" width="690" height="430">

1

什么是最好的方法?诸如“最高效”,“最快渲染”之类的词更为具体。无论如何,我提供的替代答案大部分时间对我有帮助(无论“最佳”与否无关紧要)。

替代答案:使用iframe。

也就是说,将SWF文件托管在服务器上。如果将SWF文件放在根目录或public_html文件夹中,则SWF文件将位于www.YourDomain.com/YourFlashFile.swf

然后,在index.html或任何位置上,将上述位置链接到iframe,无论将iframe放在哪里,它都会显示在您的内容周围。如果可以在其中放置iframe,则可以在其中放置SWF文件。使iframe尺寸与SWF文件相同。在下面的示例中,SWF文件为500 x 500。

伪代码:

<iframe src="//www.YourDomain.com/YourFlashFile.swf" width="500" height="500"></iframe>

上面的HTML代码行将嵌入您的SWF文件。无需其他混乱。优点:符合W3C,页面设计友好,没有速度问题,极简方法。
缺点:在浏览器中启动时,SWF文件周围的空白。

那是一个替代答案。是否是“最佳”答案取决于您的项目。


3
对于谷歌@Stoic对不起你错了,它应该//www...使用//的手段,如果你对HTTPS或HTTP它的工作原理使用相同的连接类型
Barkermn01

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>

1

Thi适用于IE,Edge,Firefox,Safari和Chrome。

<object type="application/x-shockwave-flash" data="movie.swf" width="720" height="480">
            <param name="movie" value="movie.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#000000" />
            <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>

0

这对我有用:

    <a target="_blank" href="{{ entity.link }}">
        <object type="application/x-shockwave-flash" data="{{ entity.file.path }}?clickTAG={{ entity.link }}" width="120" height="600" style="visibility: visible;">
            <param name="quality" value="high">
            <param name="play" value="true">
            <param name="LOOP" value="false">
            <param name="wmode" value="transparent">
            <param name="allowScriptAccess" value="true">
        </object>
    </a>

0

使用<embed>元素:

<embed src="file.swf" width="854" height="480"></embed>

-1

如果您熟悉,可以使用JavaScript,例如:

swfobject.embedSWF("filename.swf", "Title", "width", "height", "9.0.0");

-9.0.0是Flash版本。

或者,您可以使用<object>HTML5标签。


-1 swfobject不只是JavaScript的一部分,您不能不嵌入库就直接调用它。并且<object>标记的大部分功能已从HTML 4剥离到5。仍可以使用,但不建议使用。总而言之,这是一个非常糟糕的答案。
rorypicko 2014年

在说出非常不好的答案之前,您是否已经尝试过?请记住,非常糟糕的答案是无法完全奏效或出错的答案。
艾伦2014年

您要通知某人使用javascript,然后使用您甚至没有提到的javascript库粘贴代码这一事实使它成为一个错误的答案
rorypicko 2014年

我已经提到过使用Javascript并给出了脚本。如果我给出了完整的工作代码/脚本,可以一口喂饱。该脚本很好,仅是一种逻辑。
艾伦2014年

您误解了我的评论。您尚未告诉他包含SWFObject Javascript文件
rorypicko
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.