当前位置:  开发笔记 > 编程语言 > 正文

使用Javascript检测Flash应用程序是否正确加载?

如何解决《使用Javascript检测Flash应用程序是否正确加载?》经验,为你挑选了1个好方法。

我的产品打开Web浏览器并将其指向包含本地Flash应用程序的HTML文件.如何以编程方式检测此文件是否已成功加载,以及是否未引发异常?有没有办法用Javascript做到这一点?

从外部检查文件是否存在于磁盘上是不够的,因为我已经看到其他故障发生(可能涉及竞争条件).



1> Gili..:

回答我自己的问题:https://sourceforge.net/forum/message.php?msg_id = 5929756

    定义一个Javascript函数,如果加载Flash应该调用它.

    从Flash文件的顶部调用此方法.

    使用计时器检测是否从未调用回调.

    更喜欢从Flash调用Javascript函数,而不是从Javascript调用Flash函数.无论哪种方式,您都无法调用尚未加载的函数.在从Flash调用它之前,保证浏览器已经完成加载Javascript函数要容易得多,而不是保证Flash在从Javascript调用它之前完成加载Flash函数.

这是一个例子:

我正在使用swfobject嵌入Flash.

我使用FlashVars告诉Flash要调用哪个Javascript函数.如果页面上有多个Flash对象,这将非常有用.

var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
if (ExternalInterface.available)
{
    var onLoaded:String = params["onLoaded"];
    if (onLoaded != null)
        ExternalInterface.call(onLoaded, true);
}

使用Javascript

var flashLoaded = false;
var flashTimer;

function onFlashLoaded()
{
    flashLoaded = true;
    clearTimeout(flashTimer);
}

function onFlashTimeout()
{
    if (!isFlashLoaded)
    {
        // Remove the Flash object in case it is partially loaded
        $("#videoFeed").empty();
        $("#videoFeed").append('
'); alert("Failed to load video player"); } clearTimeout(flashTimer); } function connectToVideo() { var flashvars = {}; flashvars.onLoaded = "onFlashLoaded"; var params = {}; params.menu = false; var attributes = {}; isFlashLoaded = false; flashTimer = setTimeout("onFlashTimeout()", 5000); swfobject.embedSWF("flash/VideoFeed.swf", "flashObject", "800", "600", "11", "expressInstall.swf", flashvars, params, attributes); }

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有