javascript html5 swfobject

javascript - swfobject.embedSWF no funciona?



html5 (2)

Chrome desde la versión 55 no inicializa las variables que swfobject necesita para detectar si Flash está instalado. Puede aplicar un parche primitivo a swfobject js para omitir la verificación hasPlayerVersion:

- if (hasPlayerVersion(swfVersionStr)) { // create SWF + try { // create SWF var obj = createSWF(att, par, replaceElemIdStr); if (att.id == replaceElemIdStr) { setVisibility(replaceElemIdStr, true); } callbackObj.success = true; callbackObj.ref = obj; - } - else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install - att.data = xiSwfUrlStr; - showExpressInstall(att, par, replaceElemIdStr, callbackFn); - return; - } - else { // show alternative content + } catch (e) { // show alternative content setVisibility(replaceElemIdStr, true); }

El siguiente código que incorpora una animación Flash en un documento HTML utilizando SWFObject muestra solo el contenido alternativo. ¿Por qué?

<!DOCTYPE html> <html> <head> <title>Adding a Flash Movie</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"> </script> <script type="text/javascript"> swfobject.embedSWF("flash/bird.swf", "bird", "400", "300", "8.0.0"); </script> </head> <body> <div id="bird"> <p>An animation of a bird taking a shower</p> </div> </body> </html>

Chrome, IE y Firefox muestran solo An animation of a bird taking a shower .

El código es una muestra del libro HTML y CSS: diseña y crea sitios web .


SWFObject 2.2 ya no funciona correctamente. El error en SWFObject ya se ha informado en GitHub, pero la biblioteca no se mantiene.

La nueva política de Flash "HTML por defecto" que comienza en Chrome 55 no inicializa las variables que SWFObject usa para detectar si Flash está instalado. Específicamente, navigator.mimeTypes ya no contiene application/x-shockwave-flash , a menos que el usuario habilite Flash. Otros navegadores tienen problemas similares relacionados con el esquema de activación de clic para ejecutar introducido como parte del final de la vida útil de Flash .

En este momento, el mejor curso de acción puede ser simplemente usar <object> para incrustar Flash. Por ejemplo:

<object type="application/x-shockwave-flash" data="app.swf"> <param name=''movie'' value="app.swf"/> <param name=''bgcolor'' value="#999999"/> <param name=''FlashVars'' value="var1=Hello&var2=Goodbye" /> <param name=''allowscriptaccess'' value="sameDomain"/> </object>

Tenga en cuenta que (1) el .swf se especifica en dos lugares (2) solo se requiere el parámetro de movie ; Los otros parámetros se muestran aquí como un ejemplo de lo que es posible.