Abbiamo già visto in questo post come utilizzare Unobtrusive Flash Object (ufo.js) per pubblicare un filmato flash swf all’interno di una pagina html. Un altra via per evitare i problemi legati ai tag OBJECT ed EMBED, è usare il file javascript SWFobject.
Anche questa tecnica si basa sull’uso del DOM: creeremo un elemento DIV, quindi, il cui contenuto sarà sostituito da javascript con il filmato flash che specificheremo.
E’ possibile scaricare swfobject qui.
Il funzionamento di swfobject.js è molto semplice.
E’ necessario innanzitutto includere lo script all’interno dell’Head nella pagina Html. Quindi:

<script type="text/javascript" src="swfobject.js"></script>

A questo punto, come nel caso di UFO, si imposta il div contenitore: il testo presente all’interno di quest’ultimo sarà visualizzato in tutti i casi in cui, per qualsiasi motivo, javascript non sarà in grado di inserire il player, ma possiamo essere abbastanza sicuri che ciò avverrà solo se non è installato il plugin. Proprio per questo motivo il testo che inseriremo in questo div farà riferimento al plugin mancante:

<div id="swfcontent">
Non è possibile visualizzare il filmato.<br/>
Potrebbe essere necessario installare il plugin flash.<br/>
Puoi scaricarlo <a href="http://www.adobe.com/shockwave/download/download.cgi">qui</a>
</div>

A questo punto possiamo ordinare a SWF Object di sostituire il contenuto del div “swfcontent” con il filmato che noi specificheremo, in questo modo:

<script type="text/javascript">
   var so = new SWFObject("mymovie.swf", "mymovie", "400", "200", "8", "#336699");
   so.write("swfcontent");
</script>

Evidentemente anche SWFOBJECT prevede parametri obbligatori: il percorso del file swf, l’ID univoco da assegnare all’oggetto multimediale che verrà creato, larghezza e altezza, la versione di flash player necessaria per visualizzare il file swf, e il colore di sfondo del filmato.

Ovviamente è possibile passare al file swf variabili flashvars, in questo modo:

so.addVariable("variable1", "value1");

Mentre la funzione getQueryParamValue permette inoltre di passare al filmato flash il contenuto di una variabile presente nell’url:

so.addVariable("varName2", getQueryParamValue("GetVarName"));

Per concludere ecco il codice completo per pubblicare contenuto flash utilizzando SWFOBJECT, supponendo che il file .swf si trovi nella stessa cartella del file html,:

<!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 | pagina esempio</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
</head>
  <body>
    <div id="swfcontent">
Non è possibile visualizzare il filmato. Potrebbe essere necessario installare il plugin flash, puoi scaricarlo <a href="http://www.adobe.com/shockwave/download/download.cgi">qui</a>
    </div>

<script type="text/javascript">
   var so = new SWFObject("mymovie.swf", "swfcontent", "400", "200", "8", "#336699");
// aggiungiamo righe come la seguente se vogliamo passare variabili al file swf
   so.addVariable("varName", "Var Content"); 
// aggiungiamo righe come la seguente per utilizzare variabili presenti nell'url
   so.addVariable("varName2", getQueryParamValue("GetVarName")); 
   so.write("flashcontent");
</script>


  </body>
</html>

Link:
La pagina di SWFobject

This entry was posted in Tutorial, Webdesigner and tagged , , , , , , , , , , , . Bookmark the permalink.

24 Responses to Inserire un filmato SWF (Flash) in una pagina Html con javascript: SWFObject

  1. Pingback: Inserire correttamente un filmato SWF (Flash) in una pagina Html utilizzando javascript | daniele rollo

  2. Pingback: Inserire un video in formato flv all'interno di una pagina html | daniele rollo

  3. stefano says:

    se non ho capito male con questo script ordineremo l’inserimento d un file flash dentro ad un div giusto?

    io vorrei però poter richiamare diversi video in questo div, cioè cliccando sul link 1 fare in modo che il video ad esso associato si vada ad aprire nel div, stessa cosa cliccando il link2, il 3..ecc ecc..

    mi sapreste dare una dritta perfavore?

  4. daniele says:

    Ciao Stefano, innanzitutto una precisazione: con questo script inserisci un filmato flash SWF, non per forza un video all’interno del DIV.
    Per inserire un vero e proprio video il tutorial giusto è questo.

    In ogni caso: per cambiare al volo con un click il contenuto del div (se ho capito bene), credo che potresti creare una funzione javascript e richiamarla al click sul link. La funzione javascript cambia ancora una volta il contenuto del div con il filmto SWF che preferisci (il nome del filmato lo “passi” alla funzione che lo utilizza per ricreare il giusto contenuto del div).
    Purtroppo non riesco a risponderti in poche righe, ma
    appena posso scrivo un post su questo, grazie dello spunto!

  5. stefano says:

    sì intendo anch’io inserire file swf, cioè i classici file prelevati da youtube.
    come prima soluzione ho pensato all’utilizzo di iframe, ma siccome voglio passare la validazione del mio sito ne è proibito l’utilizzo.

    Spero che tu possa presto inserire un post sull’argomento, io purtroppo capisco praticamente nulla di javascript e perciò mi limiterei a seguire i vari passi sperando d capirli tutti per bene, a copiarli ed incollarli modificando i nomi dei file flash e a genuflettermi in tuo onore per la risoluzione del mio problema :) )

  6. daniele says:

    Comunque Stefano considera che relativamente ai video, anche quelli di youtube, SWF è il contenitore FLASH: il video vero e proprio, quello che puoi anche scaricare è un file FLV.

  7. Pingback: Filmati Flash SWF e video in formato FLV: una panoramica | daniele rollo

  8. bender says:

    Ciao, se a questo punto vorrei inserire un altro oggetto Flash (p.es. un banner) SOPRA il player appena creato, come si dovrà procedere? E soprattutto, è possibile?
    Grazie 1000!

  9. daniele says:

    ciao Bender, praticamente mi chiedi di inserire più filmati SWF all’interno della pagina. Ripeti lo script, facendo attenzione a nominare i div contenitori usando ID univoci, altrimenti non funzionerà (puoi numerarli).

    (Se vuoi inserire più di due o tre swf, ti converrà creare una funzione per allegerire la pagina… di questo mi occuperò in un tutorial prossimamente)

  10. Stefano says:

    Salve ho visto il vostro tutorial per inserire video flash in pagine web.
    Il mio problema è che io ho un sito e-commerce dove ho aggiunto pagine con dreamweaver in quando il sito dovrebbe essere in asp. Non riesco ad inserire i filmati in nessun modo. Ho seguito tutte leistruzioni:
    Caricare sul server il mediaplayer il file swf object il file flv, ma la pagine html quale metto?.
    Insomma non si vede nien te

  11. Fabrizio says:

    ecco il codice php (spero):

    <?php

    include_once("db.php");

    $id_blob = isset($_GET["id_file"]) ? trim($_GET["id_file"]) : "";
    $stream = db_find("blob_blob", "blb_blobs", "id_blob = $id_blob ");

    echo ($stream);
    die();

    ?>

  12. daniele says:

    Fabrizio ti rispondo al volo: non puoi passare una url con parametro get come nome del filmato tra le variabili js. deve essere il nome del file più l’estensione flv. Salva direttamente nel db il nome del file, e poi passa questo allo script. oppure con php fai in modo di “trasformare” l’id in un nome file più l’estensione flv e quindi inserisci questo nello script (via echo) (sempre che il file esista).

  13. PL Bonatto says:

    Caro Daniele,
    Solo alcune note (se non già evidenziate):
    1. L’id della div deve essere uguale al parametro della write JS, altrimenti non funzia, ovvero:
    …so.write(“flashcontent”)
    2. Il secondo parametro di SWFObject (“myflash”) ha un altro significato e può essere diverso come id dai due precedenti
    3. Questo tool è molto interessante, anche se relativamente compatibile, per es. funzia bene con MZ-Firefox 2, ma non linka con MS-Explorer 7
    4. Vedere: http://blog.deconcept.com/swfobject/
    Grazie.
    PLB

    ————————————————
    testo…

    var so = new SWFObject(“flash.swf”,”myflash”,”80″,”40″,”8″,”#FFFFFF”);
    so.write(“flashcontent”);

    ————————————————

  14. roberto says:

    urgente!ho da inserire nel mio sito molti video che da mpg sono stati convertiti in flv pero no so come fare visto che non sono pratico di flash e vari codici.la mia idea e’ di avere una pagina web con i filmati e che sia l’utente a caricarlo con il tasto “start”per capirci come posso fare? che programma devo scaricare ed inserirlo nel server cosi l’utente possa vedere i film?

  15. Massimo says:

    Funziona tutto sul PC, ma sul web il player dice file non trovato. Non trovo la soluzione

  16. johnny says:

    un esempi vale piu di 1000 parole

  17. daniele says:

    ciao johnny,
    In alcuni post specialmente quelli più “lineari” di solito non fornisco l’esempio.

    daniele

  18. Luca says:

    Ciao Daniele e complimenti per il tuo sito…
    passo a farti una domanda..
    sto provando ad utilizzare Swfobject 2.2 per validare il sito con W3C e passare delle flashvars ai miei swf.

    Il sito è composto in questo modo… ho solamente 3 swf.. uno a sinistra e due al centro della pagina…

    ora ti spiego il mio problema… se faccio l’embed dell’swf all’interno dei rispettivi DIV con dreamweaver (quindi nn seguendo il metodo SwfObject) si allineano bene come dovrebbero…

    invece…

    appena sostituisco il codice generato da dreamweaver con quello di Swfobject non si allinea più bene… ovvero..riesco a vedere tutti e tre gli swf.. ma si allineano uno sull’altro… oppure si sovrappongono… come se non si interessasse più degli allineamenti che gli passo tramite il css..

    sapresti spiegarmi come mai?? è mai successo anche a te??

    ti faccio presente che utilizzo Swfobject 2.2 e sto provando il metodo della pubblicazione DINAMICA.

    grazie mille del tuo aiuto

    Luca

  19. barbara says:

    potete aiutarmi devo inserire un file swf nella pag html ho usato questo tutorial ma non sono riuscita a farlo funzionare
    e con la procedura guidata di dreamweawer il filmato non viene visualizzato dopo la pubblicazione sul server non capisco qualcuno ha qualche idea?

  20. Marco says:

    Ciao a tutti ho un problema.
    Ho usato questo (ottimo) tutorial per inserire il file .swf in una pagina. Praticamente attraverso una seri di funzioni apro un popup con all’interno il codice object/embed generato da swfobject. Mi chiedo però se è possibile rendere il contenuto swf cliccabile e indirizzabile ad una specifica pagina, in quanto ora, se ci clicco, mi apre una pagina con lo stesso url della pagina di provenienza più il valore undefined (es http://www.blabla.com/undefined).
    In poche parole vorrei che cliccando sopra al file swf mi si apra una specifica pagina.
    Ringrazio molto chi può aiutarmi

  21. Peter says:

    è possibile che le immagini grandi non vengano visualizzate correttamente?

  22. Lele says:

    Salve Daniele, ho un problema con dreamweaver…non riesco a realizzare una mappa con i punti cliccabili su un file SWF. sulle immagini normali è semplicissimo ma sui file in flash come si fa?

  23. toni says:

    ciao, una domanda…ho inserito sul mio blog, una canaletv con mogulus, mi ha dato il codice embed ma vorrei inserire il lettore sotto l’header quindi nella colonna centrale sfruttando la sua larghezza, dato che quelle laterali mi impongono misure piccole, dovrei creare un box ma forse sbaglio qualcosa, come faccio a creare un div implementandoci dentro il codice embed che mi restituisce mogulus?

  24. purtroppo non ho capito esattamente dove cambiare i div nel codice head per inserire in una stessa pagina più filmati interni in flash.. si può avere un esepio pratico?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>