usar flash + contenido alternativo (object tag)
7 seguidores
necesito usar flash en una web, que funcione en IE + NS. Pero ojo, ademas de eso, que pueda poner contenido alternativo dentro del object. Es decir, si el navegador no tiene el flash que vea el html alternativo.
¿Que hay mal en este ejemplo? Mozilla sin el plugin no muestra nada.
<code> <object type="application/x-shockwave-flash" data="index.swf" width="743" height="350">
<param name="movie" value="index.swf">
<!-- contenido alternativo accesible -->
<img src="imgs/cabecera.jpg" width="663" height="185" alt="cabecera">
<!-- fin contenido alternativo accesible -->
</object>
</code>gracias
meddle
mierda, veamos. parece ser que el FireFox viene con el plugin del Flash 5,0 por defecto ( ? ). El caso es que el codigo de arriba no funciona para un flash que supongo debe ser el MX. ¿No es muy raro? Ni muestra el Flash (no lo entiende) ni el contenido alternativo. Si en cambio cambio la ruta del Flash para que no lo encuentre, entonces si que muestra el contenido alternativo sin problemas.
Una ayudita?
Looup
Me voy a atrever... Yo lo enfocaría de diferente manera (usando php, por ejemplo): si tengo flash, escribo los tags necesarios para que se vea mi flash; que no, escribo los tags de la imagen o el texto o lo que sea. ¿No te puede valer algo así?
No he probado nunca meter otros tags dentro del object, pero por lo que veo parece que resulta complicado. ¿Puede ser que no se soporten mutuamente? Ahora toca mirar la referencia del w3c sobre el tag object y también (por desgracia) en la página de macromedia a ver qué ponen.
meddle
lo malo de hacerlo servewrside es que el puto IE (como no) da una query de accept tal que q=1 y se queda tan pancho. nada de plugins
Looup
Joé... pero de todas formas desde el tag puedes forzar la versión de flash que necesitas para ver el swf. Con esto y con todo, también habría que poner el embed para el mozilla no?
Ahora que me acuerdo, no puedes meter las imágenes también como object?? (al menos eso era lo que querían por ahí). Aquí una breve referencia.
meddle
si meto el embed + el contenido alternativo, el NS me muestra las dos cosas
txuma
Sergi, no estoy muy seguro, pero has probado a ponerlo así:
<code>
<object type="application/x-shockwave-flash" data="index.swf" width="743" height="350">
<!-- contenido alternativo accesible -->
<img src="imgs/cabecera.jpg" width="663" height="185" alt="cabecera">
<!-- fin contenido alternativo accesible -->
<param name="movie" value="index.swf">
</object>
</code>
Es decir, que el contenido alternativo tiene que ir justo después de la etiqueta OBJECT.
Prueba a ver.
meddle
ah no, era el Opera. Ya no recordaba bien. Hice un test en PHP, algo cmo esto:
<code><?php
echo "$HTTP_ACCEPT<br>";
if(eregi("flash", $HTTP_ACCEPT)) {
echo "SI FLASH";
}
else {
echo "NO FLASH";
}
?></code>pero los resultados son algo pobres. Podeis probar aqui:
http://meddle.dzygn.com/flash.php
txuma, lo tuyo no funciona tampoco
XrV
sergi, tengo un .js en el curro con justamente eso compatible con todo lo actual, mañana te lo mando :)
saludines
txuma
meddle
txuma, lo tuyo no funciona tampoco
Con que browsers lo has probado?? Yo estoy mirando este ejemplo y parece que sí me funciona.
meddle
txuma, eso es justamente mi codigo ;) en ese caso debe ser FLash 5, pq mi FF me lo lee, pero mi FF no tiene el plugin de MX y es justo lo que necesito comprobar. pero gracias ;)
marc, no tienes nada que no sea js?
joder no me lo puedo creer. ¿nadie ha intentado nunca meter contenido alternativo sin usar embed y que funcione en NS+IE+OP? :(
XrV
es un js q te mira la versión del plugin, si no tienes la versión que le exiges te muestra contenido HTML, simplemente.
meddle
bueno pasamelo a ver si le puedo hacer una ñapa. gracias
XrV
mañana :P
pedro_fm
sergi, tienes un largisimo emilio :)
ese script que dice marc creo que tambien lo tengo por aqui, aunque seguro que esta viejo ya, pero sería retocarlo
meddle
si podemos no tener que usar js mejor, creo que podre arreglarlo. luego te digo algo a lo del email
pedro_fm
mirate el primer enlace. la tecnica que comentan es sumamente sencilla no?
meddle
justo lo que estaba pensando en el bus, añadir el classid y el codebase. creo que el problema era que al no estar, el NS que tenia un flash 5 pillaba el objeto como ok pero al ser un flash MX se hacia la picha un lio y no cargaba ni lo uno ni lo otro. dejame probar...
meddle
bueno, ¿que os parece este codigo? No se si valida por el uso de EMBED (pero que conste que eso para mi no ha sido una prioridad, la prioridad es que sea accesible con un contenido alternativo) pero parece que se ve en todos:
http://209.204.223.237/compren/scripts.htm
es decir:
<code><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/
flash/swflash.cab#version=4,0,2,0"
width="100" height="20" title="SIDAR">
<param name=movie value="sidar.swf">
<param name=quality value=high>
<param name="BGCOLOR" value="">
<embed src="sidar.swf" quality=high
pluginspage="http://www.macromedia.com/shockwave/download/
index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="100" height="20" bgcolor="">
</embed>
<noembed><a accessKey=S z-index:2 href="http://www.sidar.org" title="Página principal
del Sidar.">Sidar</a></noembed>
</object></code>me temo que es el tipico de siempre pero añadiendo el noembed, ¿no?
XrV
weno, lo prometido es deuda, ya se que prefieres no usar JS pero ahí va (es una adaptación a mi manera del code de moock):
var rv = 6; //versión minima
f2=f3=f4=f5=f6=f7=f8=f9= false;
var mv = 9; //versión máxima
var av = 0;
hrv = false;
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
if(isIE && isWin){
document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
document.write('on error resume next \n');
document.write('f2 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
document.write('f3 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
document.write('f4 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
document.write('f5 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');
document.write('f6 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');
document.write('f7 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7"))) \n');
document.write('f8 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8"))) \n');
document.write('f9 = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.9"))) \n');
document.write('<\/SCR' + 'IPT\> \n');
}
if (navigator.plugins) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var fd = navigator.plugins["Shockwave Flash"].description;
var fv = parseInt(fd.substring(16));
f2=fv==2;
f3=fv==3;
f4=fv==4;
f5=fv==5;
f6=fv==6;
f7=fv==7;
f8=fv==8;
f9=fv>=9;
}
}
for (var i = 2; i <= mv; i++) {
if (eval("f" + i) == true){
av = i;
}
}
if(navigator.userAgent.indexOf("WebTV") != -1){
av = 4;
}
if (av >= rv) {
hrv = true;
}
function swf(u,w,h){
var f;if(hrv){
//código para flash
//u -> nombre del flash que se quiere insertar
//w & h -> medidas
f='<OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="'+w+'" HEIGHT="'+h+'"><PARAM NAME="MOVIE" VALUE="/img/swf/'+u+'.swf"><PARAM NAME="PLAY" VALUE="true"><PARAM NAME="LOOP" VALUE="false"><PARAM NAME="QUALITY" VALUE="high"><PARAM NAME="MENU" VALUE="false"><EMBED SRC="/img/swf/'+u+'.swf" WIDTH="'+w+'" HEIGHT="'+h+'" PLAY="true" LOOP="false" QUALITY="high" MENU="false" TYPE="application/x-shockwave-flash"></EMBED></OBJECT>'
}else{
//código alternativo
f='<img src="/img/swf/'+u+'.jpg" height="'+h+'" width="'+w+'">'
}
document.write(f);}
luego para instanciarlo usas
<script type="text/javascript">swf("lapeli",550,400);</script>
ala, esperemos que te sea útil, y si no pues ná :P
meddle
gracias, pero viendo todo ese churro ya tengo claro que no lo voy a usar, vaya churro de lineas nen! ;)
gracias entodosmodos.
ahora en serio: ¿nadie tiene una puñetera respuesta a mi ultimo msg? (object+embed+noembed) joder aki todos sois flasheros coño :)
XrV
pues no se man, normalmente nunca me he preocupado de si tienen o no el flashplayer ya que el mismo objeto se encarga de pedirlo, no se ... no es algo que al menos a mi me quite el sueño (si tengo que tomarme eso en serio uso el churro y listos :))
meddle
Bueno pues parece que lo he conseguido, pero claro, no puedo comprobarlo con un 100% de seguridad. Lo que he hecho:
<code><object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0"
align="baseline" border="0" width="743" height="350">
<div id="menu">
<ul>
<li><a ref="#">a</a></li>
<li><a href="#">b</a></li>
<li><a href="#">c</a></li>
<li><a href="#">d</a></li>
</ul>
</div>
<param name="movie" value="index.swf">
<param name="quality" value="high">
</object></code>Ahora por lo que parece, el contenido alternativo (menu html con lista) se presenta en navegadores que
1) no tienen plugin o bien
2) tienen un plugin antiguo
mientras que en los demas (tienen plugin actual) se muestyra el flash.
Vosotros que teneis mas ejemplos y eso, podeis comprobarlo, ¿plis? - haced algo coño, que me estoy cabreando con el puto flash y la mayoria me dejais mas solo que la una :P
meddle
Bueno pues no, parece que Firefox con Plugin MX no carga el flash (aunque si el html alternativo). Joder odio tener que usar javascript...
meddle
txuma
Con que browsers lo has probado?? Yo estoy mirando este ejemplo y parece que sí me funciona.
txuma, el problema es que con ese codigo, si el navegador (Mozilla) tiene un plugin antiguo trata de reproducir el flash (porque si que lee bien la ruta) pero no puede y entonces ni lee el flash ni lee el html alternativo.
Una solucion quiero :(
Si por lo menos los putos navegadores soltaran el HTTP_ACCEPT de manera correcta, mecagüensusputosmuertos....
txuma
dame un ratillo que estoy haciendo algunas pruebas ;)