Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2007, 06:16
Avatar de el_javi
el_javi
 
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 10 meses
Puntos: 10
Problema con FlashObject + setTimeout

Hola a tod@s.

Os escribo pro un problema que tengo muy muy raro.

Tengo una página HTML, con un flash.

Dicho Flash lo inserto por medio de FlashObject, para que se desactibe el control del flas de pulsado.

Para hacer esto, en el onLoad de mi documento (body) tengo la llamada a Javascript para hacer lo del flash.


Por otro lado, tengo un scroll en javascript, muy simple, el cual tiene que ejecutar un setTimeout para funcionar.

Bueno pues qui os pongo lo que pasa:

- Si hago la llamada al incrustar el Flash por medio del Javascript, NO FUNCIONA EL SETTIMEOUT (y con ello, no funciona el Scroll)
- Si quito la llamada a la función, y el flash no se inserta... FUNCIONA EL SCROLL
Porfavor, si alguien puede ayudarme le estaría muy agradecido.

Os posteo el código fuente de loq ue estoy usando:
(yo lo tengo dividido en librerias JS pero os lo pongo entero, para que no tengais que descargarlas)
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<
html>
<
head>
    <
title>Premios Eficacia 2007 Documentación</title>
    <
link rel="STYLESHEET" type="text/css" href="css/estilos.css">
    <!--
script src="js/LIB_swfobject_source.js" type="text/javascript"></script-->
    <
script language="JavaScript1.2" type="text/javascript">
        
/**
         * SWFObject v1.4.1: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
         *
         * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
         * http://www.opensource.org/licenses/mit-license.php
         *
         * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
         *   legal reasons.
         */
        
if(typeof deconcept == "undefined") var deconcept = new Object();
        if(
typeof deconcept.util == "undefined"deconcept.util = new Object();
        if(
typeof deconcept.SWFObjectUtil == "undefined"deconcept.SWFObjectUtil = new Object();
        
deconcept.SWFObject = function(swfidwhvercuseExpressInstallqualityxiRedirectUrlredirectUrldetectKey){
            if (!
document.createElement || !document.getElementById) { return; }
            
this.DETECT_KEY detectKey detectKey 'detectflash';
            
this.skipDetect deconcept.util.getRequestParameter(this.DETECT_KEY);
            
this.params = new Object();
            
this.variables = new Object();
            
this.attributes = new Array();
            if(
swf) { this.setAttribute('swf'swf); }
            if(
id) { this.setAttribute('id'id); }
            if(
w) { this.setAttribute('width'w); }
            if(
h) { this.setAttribute('height'h); }
            if(
ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
            
this.installedVer deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
            if(
c) { this.addParam('bgcolor'c); }
            var 
quality quality 'high';
            
this.addParam('quality'q);
            
this.setAttribute('useExpressInstall'useExpressInstall);
            
this.setAttribute('doExpressInstall'false);
            var 
xir = (xiRedirectUrl) ? xiRedirectUrl window.location;
            
this.setAttribute('xiRedirectUrl'xir);
            
this.setAttribute('redirectUrl''');
            if(
redirectUrl) { this.setAttribute('redirectUrl'redirectUrl); }
        }
        
deconcept.SWFObject.prototype = {
            
setAttribute: function(namevalue){
                
this.attributes[name] = value;
            },
            
getAttribute: function(name){
                return 
this.attributes[name];
            },
            
addParam: function(namevalue){
                
this.params[name] = value;
            },
            
getParams: function(){
                return 
this.params;
            },
            
addVariable: function(namevalue){
                
this.variables[name] = value;
            },
            
getVariable: function(name){
                return 
this.variables[name];
            },
            
getVariables: function(){
                return 
this.variables;
            },
            
getVariablePairs: function(){
                var 
variablePairs = new Array();
                var 
key;
                var 
variables this.getVariables();
                for(
key in variables){
                    
variablePairs.push(key +"="variables[key]);
                }
                return 
variablePairs;
            },
            
getSWFHTML: function() {
                var 
swfNode "";
                if (
navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
                    
if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType""PlugIn");
                    
swfNode '<embed type="application/x-shockwave-flash" src="'this.getAttribute('swf') +'" width="'this.getAttribute('width') +'" height="'this.getAttribute('height') +'"';
                    
swfNode += ' id="'this.getAttribute('id') +'" name="'this.getAttribute('id') +'" ';
                    var 
params this.getParams();
                     for(var 
key in params){ swfNode += [key] +'="'params[key] +'" '; }
                    var 
pairs this.getVariablePairs().join("&");
                     if (
pairs.length 0){ swfNode += 'flashvars="'pairs +'"'; }
                    
swfNode += '/>';
                } else { 
// PC IE
                    
if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType""ActiveX");
                    
swfNode '<object id="'this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'this.getAttribute('width') +'" height="'this.getAttribute('height') +'">';
                    
swfNode += '<param name="movie" value="'this.getAttribute('swf') +'" />';
                    var 
params this.getParams();
                    for(var 
key in params) {
                     
swfNode += '<param name="'key +'" value="'params[key] +'" />';
                    }
                    
swfNode += '<param name="wmode" value="transparent" />';
                    var 
pairs this.getVariablePairs().join("&");
                    if(
pairs.length 0) {swfNode += '<param name="flashvars" value="'pairs +'" />';}
                    
swfNode += "</object>";
                }
                return 
swfNode;
            },
            
write: function(elementId){
                if(
this.getAttribute('useExpressInstall')) {
                    
// check to see if we need to do an express install
                    
var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
                    if (
this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
                        
this.setAttribute('doExpressInstall'true);
                        
this.addVariable("MMredirectURL"escape(this.getAttribute('xiRedirectUrl')));
                        
document.title document.title.slice(047) + " - Flash Player Installation";
                        
this.addVariable("MMdoctitle"document.title);
                    }
                }
                if(
this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
                    var 
= (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
                    
n.innerHTML this.getSWFHTML();
                    return 
true;
                }else{
                    if(
this.getAttribute('redirectUrl') != "") {
                        
document.location.replace(this.getAttribute('redirectUrl'));
                    }
                }
                return 
false;
            }
        }
        
        
/* ---- detection functions ---- */
        
deconcept.SWFObjectUtil.getPlayerVersion = function(reqVerxiInstall){
            var 
PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
            if(
navigator.plugins && navigator.mimeTypes.length){
                var 
navigator.plugins["Shockwave Flash"];
                if(
&& x.description) {
                    
PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|s)+/, "").replace(/(s+r|s+b[0-9]+)/, ".").split("."));
                }
            }else{
                try{
                    var 
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
                    for (var 
i=3axo!=nulli++) {
                        
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
                        
PlayerVersion = new deconcept.PlayerVersion([i,0,0]);
                    }
                }catch(
e){}
                if (
reqVer && PlayerVersion.major reqVer.major) return PlayerVersion// version is ok, skip minor detection
                // this only does the minor rev lookup if the user's major version 
                // is not 6 or we are checking for a specific minor or revision number
                // see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
                
if (!reqVer || ((reqVer.minor != || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != || xiInstall) {
                    try{
                        
PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
                    }catch(
e){}
                }
            }
            return 
PlayerVersion;
        }
        
deconcept.PlayerVersion = function(arrVersion){
            
this.major parseInt(arrVersion[0]) != null parseInt(arrVersion[0]) : 0;
            
this.minor parseInt(arrVersion[1]) || 0;
            
this.rev parseInt(arrVersion[2]) || 0;
        }
        
deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
            if(
this.major fv.major) return false;
            if(
this.major fv.major) return true;
            if(
this.minor fv.minor) return false;
            if(
this.minor fv.minor) return true;
            if(
this.rev fv.rev) return false;
            return 
true;
        } 
(el código continua en el siguiente post)

Gracias por vuestra ayuda de antemano.

Adios