首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断闪存已经加载完成?

如何判断闪存已经加载完成?
EN

Stack Overflow用户
提问于 2012-11-21 18:00:41
回答 2查看 2.2K关注 0票数 0

在我们的网站中,我将一个由flash builder制作的flash嵌入到html中,flash的大小超过2M。由于网络故障,加载闪存可能需要30秒。如何知道flash已被浏览器完全加载?

EN

回答 2

Stack Overflow用户

发布于 2012-11-22 03:09:14

您可以轮询SWF以获取其PercentLoaded值。

有一种方法可以做到这一点(代码复制自learnswfobject.com):

代码语言:javascript
复制
function swfLoadEvent(fn){
    //Ensure fn is a valid function
    if(typeof fn !== "function"){ return false; }
    //This timeout ensures we don't try to access PercentLoaded too soon
    var initialTimeout = setTimeout(function (){
        //Ensure Flash Player's PercentLoaded method is available and returns a value
        if(typeof e.ref.PercentLoaded !== "undefined" && e.ref.PercentLoaded()){
            //Set up a timer to periodically check value of PercentLoaded
            var loadCheckInterval = setInterval(function (){
                //Once value == 100 (fully loaded) we can do whatever we want
                if(e.ref.PercentLoaded() === 100){
                    //Execute function
                    fn();
                    //Clear timer
                    clearInterval(loadCheckInterval);
                }
            }, 1500);
        }
    }, 200);
}

//This function is invoked by SWFObject once the <object> has been created
var callback = function (e){

    //Only execute if SWFObject embed was successful
    if(!e.success || !e.ref){ return false; }

    swfLoadEvent(function(){

        //Put your code here
        alert("The SWF has finished loading!");

    });

};

swfobject.embedSWF("movie.swf", "flashcontent", "550", "400", "9", false, false, false, false, callback);
票数 1
EN

Stack Overflow用户

发布于 2016-05-27 02:41:46

pipwerks回答运行良好。你甚至可以得到更低的值:而不是1500,只有100就可以了。

但我在Firefox上遇到了一些问题。initialTimeout应该是一个timeInterval,而不是超时,因为在FF中,有时第一次调用时你会有未定义的e.ref.PercentLoaded,但下一次调用就可以了。当然,当if为真时,您需要调用clearInterval(InitialTimeout)。

所以你会得到像这样的东西:

代码语言:javascript
复制
    var initialTimeout = setInterval(function (){
     if(typeof e.ref.PercentLoaded !== "undefined" && e.ref.PercentLoaded()){
         clearInterval(initialTimeout);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13490662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档