¿Cómo incrustar un archivo SWF en una página HTML?

Respuestas:

174

El mejor enfoque para incrustar un SWF en una página HTML es usar SWFObject .

Es una biblioteca de JavaScript de código abierto simple que es un método fácil de usar y amigable con los estándares para incrustar contenido Flash.

También ofrece detección de versiones de Flash Player. Si el usuario no tiene la versión de Flash requerida o tiene JavaScript deshabilitado, verá un contenido alternativo. También puede usar esta biblioteca para activar una actualización de Flash Player. Una vez que el usuario se haya actualizado, será redirigido a la página.

Un ejemplo de la documentación:

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

Una buena herramienta para usar junto con esto es el generador SWFObject HTML y JavaScript . Básicamente genera el HTML y JavaScript que necesita para incrustar el Flash usando SWFObject. Viene con una interfaz de usuario muy simple para que ingrese sus parámetros.

Es muy recomendable y muy fácil de usar.

Ronnie Liew
fuente
11
SWFObject es bueno. Simplemente funciona Una idea aún más maravillosa es usar una red de entrega de contenido para obtener el JavaScript. Uso ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
Ardee Aram
Tuve problemas con el uso de la etiqueta de objeto directamente con IE9 pero funciona perfectamente con swfobject.
AndyMcKenna
Gracias por tu respuesta. Ahora puede sugerir un reproductor también para acceder a la capacidad de reproducción junto con ejemplos de trabajo en html. ????
Sumit Ramteke
¿Puede esto funcionar en ese sistema donde Flash Player no está instalado o es compatible con todos los navegadores?
Mohammed Javed
El proyecto ahora se ha movido a GitHub: github.com/swfobject/swfobject y la nueva técnica para incrustar objetos swf esvar el = document.getElementById("my-target-element"); swfobject.embedSWF("myContent.swf", el, 300, 120, 10);
Lucky
127
<object width="100" height="100">
    <param name="movie" value="file.swf">
    <embed src="file.swf" width="100" height="100">
    </embed>
</object>
Ólafur Waage
fuente
1
Ese código no es válido para XHTML ... <embed> no debe estar dentro de una etiqueta de objeto.
Anheledir
59
Sin especificación del usuario para ser XHTML válido, pidió HTML
Ólafur Waage
3
Este artículo tiene una buena explicación sobre la incorporación de flash y XHTML válido. yoast.com/articles/valid-flash-embedding
Joko Wandiro
3
¿por qué no usar el dataatributo en el elemento <objeto> ? Cita de w3c html5 docs: al menos uno de los atributos de datos o de tipo debe estar presente.
vladkras
@JokoWandiro, desafortunadamente el enlace que proporcionó desapareció. Aquí hay una versión archivada: web.archive.org/web/20180602024700/https://yoast.com/…
Hermann.Gruber
17

¿Qué tal una simple inserción de etiquetas HTML5?

<!DOCTYPE html>
<html>
<body>

<embed src="anim.swf">

</body>
</html>
Jan Desta
fuente
13

Esto es adecuado para la aplicación desde el entorno raíz.

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

Deben agregarse / pueden agregarse parámetros adicionales que dependen de .swf. Sin incrustaciones , solo objetos y parámetros dentro, por lo tanto, sigue siendo válido, funciona y se puede usar en todas partes, ¡no importa de qué se trate DOCTYPE! :)

Escalofriante
fuente
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>
Escalofriante
fuente
2
Tenga en cuenta que los parámetros de objeto> datos y película> valor son los mismos. Este código debería funcionar para cualquier persona que pueda ver y compartir videos de YouTube de forma gratuita.
Spooky
3
En términos generales, es deseable que las respuestas expliquen el código que dan, en lugar de simplemente colocar el código en el autor de la pregunta. El objetivo es aprender sobre los problemas y prevenirlos en el futuro en lugar de hacerlos desaparecer.
KRyan
7

Si está utilizando una de esas bibliotecas js para insertar Flash, le sugiero agregar una etiqueta de incrustación de objetos simples dentro de <noscript/>.

Brian Kim
fuente
2

Uso http://wiltgen.net/objecty/ , ayuda a incrustar contenido multimedia y evitar el problema de "clic para activar" de IE.

Eduardo Campañó
fuente
El problema de "hacer clic para activar" se llama "activación de eolas" pero se elimina en las versiones reales del IE.
Anheledir
2

Como se mencionó SWF Object es genial. OVNI también vale la pena echarle un vistazo

phatduckk
fuente
2

¡Este funcionará, estoy seguro!

<embed src="application.swf" quality="high" pluginspage="http://www.macromedia.com/go/getfashplayer" type="application/x-shockwave-flash" width="690" height="430">
Stefan Đorđević
fuente
1

¿Cuál es la mejor manera? Palabras como 'más eficiente', 'representación más rápida', etc., son más específicas. De todos modos, estoy ofreciendo una respuesta alternativa que me ayuda la mayor parte del tiempo (si es 'mejor' es irrelevante).

Respuesta alternativa: use un iframe.

Es decir, aloje el archivo SWF en el servidor. Si coloca el archivo SWF en la carpeta raíz o public_html, el archivo SWF se ubicará en www.YourDomain.com/YourFlashFile.swf.

Luego, en su index.html o donde sea, vincule la ubicación anterior a su iframe y se mostrará alrededor de su contenido donde sea que coloque su iframe. Si puede poner un iframe allí, puede poner un archivo SWF allí. Haga que las dimensiones del iframe sean las mismas que su archivo SWF. En el siguiente ejemplo, el archivo SWF es de 500 por 500.

Pseudocódigo:

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

La línea de código HTML anterior incrustará su archivo SWF. No se necesita otro desastre. Pros: Cumple con W3C, diseño de página amigable, sin problemas de velocidad, enfoque minimalista.
Contras: Espacio en blanco alrededor de su archivo SWF cuando se inicia en un navegador.

Esa es una respuesta alternativa. Si es la "mejor" respuesta depende de su proyecto.

Syed
fuente
3
para google @Stoic lo siento, tu error debería estar //www...usando //significa que si estás en HTTPS o HTTP funciona usando el mismo tipo de conexión
Barkermn01
1

Sé que esta es una vieja pregunta. Pero esta respuesta será buena por el momento.

<!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>
Isuru Dilshan
fuente
1

Thi funciona en IE, Edge, Firefox, Safari y 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>
xxnull
fuente
0

Esto funcionó para mí:

    <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>
gtb
fuente
0

Usa el <embed>elemento:

<embed src="file.swf" width="854" height="480"></embed>
aaron34weston
fuente
-1

Puede usar JavaScript si está familiarizado, así:

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

--la 9.0.0 es la versión flash.

O puede usar la <object>etiqueta de HTML5.

Alano
fuente
-1 swfobject no es solo parte de JavaScript, no puede simplemente llamarlo sin incrustar la biblioteca. y la mayor parte de la funcionalidad para la etiqueta <object> se ha eliminado de HTML 4 a 5. Todavía se puede usar, pero no se recomienda. En general, una muy mala respuesta.
rorypicko
¿Ya lo probaste antes de decir que es una respuesta muy mala? tenga en cuenta que la respuesta muy mala, es la respuesta que no funciona totalmente o está mal.
Allan
el hecho de que está informando a alguien para el uso de JavaScript, y luego pegar código utilizando una biblioteca JavaScript que ni siquiera han hace que sea una mala respuesta mencionado
rorypicko
Ya mencioné que usé Javascript y le di el script. Si le di todo el código de trabajo / script que hace una alimentación con cuchara. El script está bien, es solo una lógica.
Allan
Estás malinterpretando mi comentario. No le ha dicho que incluya el archivo SWFObject Javascript
rorypicko