Cristalab

Alternativa a swfobject para insertar Flash en HTML

Por: jripper + 17.10.2007

Se han venido aportando soluciones al problema que ha surgido a raíz de la ultima actualización de Explorer que pide hacer click para activar las películas de Flash. En Adobe nos propusieron algunas soluciones y en Cristalab se curraron un interesante artículo sobre el problema y la solución utilizando SwfObject. Incluso hay una actualización de Dreamweaver que corrige el problema.



Lo que ocurre es que nada de lo anterior solucionaba el trabajo de tener que ir cambiando de un modo prácticamente manual todos los flash de trabajos anteriores; sobre todo si la cantidad es grande. La solución la encontré en esta página y es la siguiente:

Creas un fichero iefix.js en el que pegas el siguiente código:

Código :


objects = document.getElementsByTagName("object" ) ;
for (var i = 0; i < objects.length; i++)
{
objects[i].outerHTML = objects[i].outerHTML;
}


Debajo del último "object", por ejemplo antes de la etiqueta de cierre del "body"
insertas la siguiente linea:

Código :

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


Espero les sirva! Cool

Etiquetas javascript html

Comentarios | Enviar un comentario
Suena bien...
Por: M@U
Corrígeme si me equivoco. Este código lo que hace es volver a escribir el mismo código HTML pero pasando por JavaScript ¿no? De ese modo el objeto queda incrustado no mediante HTML (que es como petaba) sino mediante JavaScript.

No sé si puede dar problemas si IE tiene inhabilitado JavaScript. Viendo el ejemplo se me ha ocurrido esto (aunque no lo he probado):

CSS de IE:

object {
behavior: iefix.htc;
}

iefix.htc:

<public:component lightWeight="true">


<script type="text/javascript">
element.outerHTML = element.outerHTML;
</script>
</public:component>
Por: Alfonso Ruzafa_blog
mmmm, no es mala onda pero a mi no me funciono y no se por que?, mas y sin embargo IE6 nunca me mostró las eolas en mi ordenador pero IE7 si y esta solución no me funciono para IE7.

Espero que puedas decirme por que, por que cuando lo edito DreamWeaver lo arreglo a la primera para ambos navegadores.

Cuidate y gracias me parece muy bien que busques otras maneras (menos complicadas) de hacer esto.
Por: fraggz
Buenas...

Yo actualmente estoy trabajando con Dreamweaver CS3 y esto lo soluciona automáticamente.

Pero cuando el servidor web está muy capado, y te obliga a trabajar con direcciones absolutas, este sistema falla.

Así que probaré estas nuevas iniativas a ver que pasa y os cuento

Un saludo
Por: perillan
Funciona y sin problema. El asunto es que hay que asegurarse que el JS cuando sea llamado desde el HTML este direccionando al archivo que es. En el caso del ejemplo el JS está siendo llamado en la misma carpeta del archivo HTML por lo tanto no genera problema. Pero en otros casos, como el mio, el JS esta en otra carpeta diferente por lo cual se debe redireccionar....... Por mi lado funciona y sin problemas.
Por: BeltranReal_blog
Hola antes que nada este es mi primer post, yo soy un diseñadorr grafico, y gracias a Cristalab, he aprendido todo lo que no me enseñaron en la escuela, practicamente aqui estudie jeje.

Y aqui tengo la solucion que yo uso para este problema en IE

Por ejemplo , creo una tabla y ahi pongo lo siguiente

<table width="980" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><script src="js/run.js" type="text/javascript">
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
<BODY bgcolor="#254063">
<div align="center">
<script type="text/javascript">runSWF("archivoflash.swf", 1024, 600,"6,0,29,0", "#254063");</script>
</div></td>
</table>

aqui cambio los parametros necesarios por ejemplo el nombre de mi archivo swf, y dentro de una carpata llamada js tengo el sigiouiente archivo run.js

function runSWF(archivo, ancho, alto, version, bgcolor, id, menu, FlashVars, quality, allowScriptAccess) {
if(version!=""){
var version_data=version;
}else{
var version_data="6,0,0,0";
}
if(menu!=""){
menu_data=menu;
}else{
menu_data=false;
}
if(bgcolor!=""){
var bgcolor_data=bgcolor;
}else{
var bgcolor_data="#FFFFFF";
}
if(id!=""){
id_data=id;
}else{
id_data="flashMovie";
}
if(quality!=""){
quality_data=quality;
}else{
quality_data="high";
}
if(allowScriptAccess!=""){
allowScriptAccess_data=allowScriptAccess;
}else{
allowScriptAccess_data="always";
}
var quality="high";
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' version_data '" width=' ancho ' height=' alto ' id=' id_data '>\n');
document.write('<param name="movie" value=' archivo '>\n');
document.write('<param name="allowScriptAccess" value=' allowScriptAccess_data '>\n');
document.write('<param name="quality" value=' quality_data '>\n');
document.write('<param name="FlashVars" value=' FlashVars '>\n');
document.write('<param name="bgcolor" value=' bgcolor_data '>\n');
document.write('<param name="menu" value=' menu_data ' >\n');
document.write('<embed src=' archivo ' bgcolor=' bgcolor_data ' FlashVars=' FlashVars ' menu=' menu_data ' allowScriptAccess=' allowScriptAccess_data ' quality=' quality_data ' pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width=' ancho ' height=' alto ' swLiveConnect=true name=' id_data '></embed>');
document.write('</object>\n');
}




ya con esto no tengo ningun problema para activar el swf, y siempre que lo aplico en alguna pagina solo hago una copia de la carpeta js y la agrego con mi siguiente pagina, espero que a alguien le sirva de algo.
saludos a todos
Por: Emmanuel_blog
Yo trabajé con una solución como iefix desde el inicio de este problema de EOLAS - Microsoft, y el problema con este tipo de código me surgió con la compatibilidad de este sistema de reescritura de los object/embed con las herramientas de servicios de banners. Por lo general, los banners flash dejaban de tener el lineal site que la herramienta le había asignado.
Pero para sites que no cuenten con estas herramientas, ésta es la mejor opción (y la mas simple de llevar adelante) sin lugar a dudas, mas teniendo en cuenta que si lo incluimos solamente en un include del footer, queda solucionado para todo el site con solo incluir una línea de código en un solo file Sonrisa.
Por: Eguy_blog
Espero mas tutoriales
Por: Judit_blog
Emmanuel_blog, tengno el mismo problemas de los demas, yo tb estudio Diseño, pero estos problemitas no te los enseñan.. veo tu codigo pero no entiendo la segunda parte.
esa es el archico run.js ?
Te agradeceria bastante si me puedes aclaras esto.
Gracias...
Por: Osvaldo_blog
HOla que tal ami si me funciono esta solución, pro el probema que encuentro es que la primera vez que entro me aparece abajo que esta descrgando un elemento y tengo que actualizarla para que se quite esto, saludos y gracias
Por: Carlos Sandoval_blog
osvaldo_blog solo crea una archivo htmldentro de este pones el codigo siguiente donde "archivoflash.swf va a ser tu clip


script src="js/run.js" type="text/javascript">
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
<BODY bgcolor="#254063">
<div align="center">
<script type="text/javascript">runSWF("archivoflash.swf", 1024, 600,"6,0,29,0", "#254063");</script>
</div>





despues creas una carpeta llamada js



habres un blog de notas y pones el codigo siguiente:




function runSWF(archivo, ancho, alto, version, bgcolor, id, menu, FlashVars, quality, allowScriptAccess) {
if(version!=""){
var version_data=version;
}else{
var version_data="6,0,0,0";
}
if(menu!=""){
menu_data=menu;
}else{
menu_data=false;
}
if(bgcolor!=""){
var bgcolor_data=bgcolor;
}else{
var bgcolor_data="#FFFFFF";
}
if(id!=""){
id_data=id;
}else{
id_data="flashMovie";
}
if(quality!=""){
quality_data=quality;
}else{
quality_data="high";
}
if(allowScriptAccess!=""){
allowScriptAccess_data=allowScriptAccess;
}else{
allowScriptAccess_data="always";
}
var quality="high";
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' version_data '" width=' ancho ' height=' alto ' id=' id_data '>\n');
document.write('<param name="movie" value=' archivo '>\n');
document.write('<param name="allowScriptAccess" value=' allowScriptAccess_data '>\n');
document.write('<param name="quality" value=' quality_data '>\n');
document.write('<param name="FlashVars" value=' FlashVars '>\n');
document.write('<param name="bgcolor" value=' bgcolor_data '>\n');
document.write('<param name="menu" value=' menu_data ' >\n');
document.write('<embed src=' archivo ' bgcolor=' bgcolor_data ' FlashVars=' FlashVars ' menu=' menu_data ' allowScriptAccess=' allowScriptAccess_data ' quality=' quality_data ' pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width=' ancho ' height=' alto ' swLiveConnect=true name=' id_data '></embed>');
document.write('</object>\n');
}




no hay necesidad de editarlo ni modificar nada



guardas el archivo como js.js ylo pones dentro de la carpeta JS QUE CREASTE y eso seria todo, si tienes alguna duda me avisas
Por: Emmanuel_blog
Hola. Sólo por confirmar, creo que cuantos más seamos los que probemos, mejor. He probado el código de iefix.js y me ha funcionado de maravilla. Mi proyecto es algo secillo y plano y a mi me ha ido bien, así que sólo dar las gracias a jripper!!!

Un saludo!

D.
Por: David_blog
Funciona perfecto. Muchisimas Gracias, me ahorraste muchos dolores de cabeza.
Por: Andres Lopez_blog
si lo hicieras en video seria mejor asi es muy difisil de k sarga
Por: aris_blog
No funciona...
Por: ceaped_blog
Salen 2 errores:
missing ) after argument list
[Break on this error] document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" cod...
run.js (line 34)
runSWF is not defined
[Break on this error] <script type="text/javascript">runSWF("peli.swf", 1000, 600,"6,0,29,0", "#25406...
Por: ceaped_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.