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


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>

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>

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


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




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

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.


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>

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>

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>

0

Usa el <embed>elemento:

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

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


-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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.