Come incorporare un file SWF in una pagina HTML?


Risposte:


174

L'approccio migliore per incorporare un file SWF in una pagina HTML è utilizzare SWFObject .

È una semplice libreria JavaScript open source che è un metodo facile da usare e conforme agli standard per incorporare il contenuto Flash.

Offre anche il rilevamento della versione di Flash Player. Se l'utente non ha la versione di Flash richiesta o JavaScript è disabilitato, vedrà un contenuto alternativo. Puoi anche utilizzare questa libreria per attivare un aggiornamento di Flash Player. Una volta eseguito l'aggiornamento, l'utente verrà reindirizzato alla pagina.

Un esempio dalla documentazione:

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

Un buon strumento da utilizzare insieme a questo è il generatore HTML e JavaScript di SWFObject . Generalmente genera l'HTML e JavaScript necessari per incorporare Flash usando SWFObject. Viene fornito con un'interfaccia utente molto semplice per inserire i parametri.

È altamente raccomandato e molto semplice da usare.


11
SWFObject è buono. Funziona semplicemente. Un'idea ancora più meravigliosa è quella di utilizzare una rete di distribuzione di contenuti per ottenere il javascript. Uso Google ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
— Ardee Aram

Ho avuto problemi con l'utilizzo del tag oggetto direttamente con IE9 ma funziona perfettamente con swfobject.
— AndyMcKenna,

Grazie per la tua risposta. Ora puoi suggerire un lettore anche per accedere alla capacità di riproduzione insieme con un esempio funzionante in HTML stesso. ????
— Sumit Ramteke,

Può funzionare su quel sistema in cui Flash Player non è installato o supporta tutti i browser.
— Mohammed Javed,

Il progetto è ora spostato su GitHub: github.com/swfobject/swfobject e la nuova tecnica per incorporare l'oggetto swf èvar 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
Quel codice non è XHTML valido ... <embed> non deve essere all'interno di un tag oggetto.
— Anheledir,

59
Nessuna specifica dell'utente per essere valida XHTML, ha chiesto HTML
— Ólafur Waage,

3
questo articolo ha una buona spiegazione sull'incorporamento di flash e XHTML validi yoast.com/articles/valid-flash-embedding
— Joko Wandiro

3
perché non usare l' dataattributo nell'elemento <object> ? Citazione dai documenti html5 di w3c: deve essere presente almeno uno degli attributi dati o l'attributo type .
— Vladkras,

@JokoWandiro il link fornito è purtroppo scomparso. Ecco una versione archiviata: web.archive.org/web/20180602024700/https://yoast.com/…
— Hermann.Gruber,

17

Che ne dici di un semplice tag HTML5 incorporato?

<!DOCTYPE html>
<html>
<body>

<embed src="anim.swf">

</body>
</html>

13

Questo è adatto per l'applicazione dall'ambiente root.

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

È possibile aggiungere / aggiungere parametri aggiuntivi che dipendono da .swf stesso. Nessun incorporamento , solo oggetto e parametri all'interno, quindi rimane valido, funzionante e utilizzabile ovunque, non importa in che cosa sia! 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
Si noti che i parametri oggetto> dati e film> sono gli stessi. Questo codice dovrebbe funzionare per qualsiasi video gratuito da guardare e condividere - youtube.
— Spooky

3
In generale, è auspicabile che le risposte spieghino il codice che danno, piuttosto che far cadere il codice sull'asker. L'obiettivo è conoscere i problemi e prevenirli in futuro piuttosto che farli sparire.
— KRyan,

7

Se stai usando una di quelle librerie js per inserire Flash, ti suggerisco di aggiungere un tag di incorporamento di oggetti semplici all'interno di <noscript/>.




2

Questo funzionerà, ne sono sicuro!

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

1

Qual è il modo migliore? Parole come "più efficiente", "rendering più veloce" e così via sono più specifiche. Ad ogni modo, sto offrendo una risposta alternativa che mi aiuta nella maggior parte dei casi (se il "migliore" è o meno irrilevante).

Risposta alternativa: utilizzare un iframe.

Cioè, ospitare il file SWF sul server. Se si inserisce il file SWF nella cartella root o public_html, il file SWF si troverà in www.YourDomain.com/YourFlashFile.swf.

Quindi, sul tuo index.html o ovunque, collega la posizione sopra al tuo iframe e verrà visualizzata intorno ai tuoi contenuti ovunque metti il ​​tuo iframe. Se puoi inserire un iframe lì, puoi inserire un file SWF lì. Rendi le dimensioni dell'iframe le stesse del tuo file SWF. Nell'esempio seguente, il file SWF è 500 per 500.

Pseudo codice:

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

La riga di codice HTML sopra incorporerà il tuo file SWF. Nessun altro pasticcio necessario. Pro: conforme al W3C, design della pagina intuitivo, nessun problema di velocità, approccio minimalista.
Contro: spazio bianco attorno al file SWF quando viene avviato in un browser.

Questa è una risposta alternativa. Se è la risposta "migliore" dipende dal tuo progetto.


3
per google @Stoic mi dispiace che tu abbia sbagliato che dovrebbe //www...usare //significa che se sei su HTTPS o HTTP funziona con lo stesso tipo di connessione
— Barkermn01

1

So che questa è una vecchia domanda. Ma questa risposta andrà bene per il 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

Funziona su IE, Edge, Firefox, Safari e 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

Questo ha funzionato per me:

    <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 l' <embed>elemento:

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

-1

Puoi usare JavaScript se hai familiarità, in questo modo:

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

--la 9.0.0 è la versione flash.

Oppure puoi usare il <object>tag di HTML5.


-1 swfobject non è solo una parte di JavaScript, non puoi semplicemente chiamarlo senza incorporare la libreria. e la maggior parte delle funzionalità per il tag <object> è stata rimossa da HTML 4 a 5. Può ancora essere utilizzata, ma non consigliata. Tutto sommato una pessima risposta.
— rorypicko,

l'hai già provato prima di dire che è una pessima risposta? tieni presente che la pessima risposta, è la risposta che non funziona completamente o sbagliata.
— Allan,

il fatto che stai informando qualcuno di utilizzare javascript e quindi incollando il codice utilizzando una libreria javascript che non hai nemmeno menzionato rende una cattiva risposta
— rorypicko

Ho già menzionato l'uso di Javascript e fornito lo script. Se ho dato l'intero codice / script funzionante che fa un cucchiaio. Lo script va bene è solo una logica.
— Allan,

Stai fraintendendo il mio commento. Non gli hai detto di includere il file Javascript SWFObject
— rorypicko
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.