使用 Javascript 检测 Flash 应用程序是否正确加载? [英] Detect if Flash application loaded correctly using Javascript?

查看:27
本文介绍了使用 Javascript 检测 Flash 应用程序是否正确加载?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的产品打开网络浏览器并将其指向包含本地 Flash 应用程序的 HTML 文件.我如何以编程方式检测此文件是否成功加载,如果没有,抛出了什么异常?有没有办法使用 Javascript 来做到这一点?

My product opens a web browser and points it at an HTML file containing a local Flash application. How do I detect programmatically whether this file loaded successfully and if not what exception was thrown? Is there a way to do this using Javascript?

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

Checking externally whether the file exists on disk is not enough because I've seen other failures occur (race conditions might be involved).

推荐答案

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

  1. 定义一个在加载 Flash 时应调用的 Javascript 函数.
  2. 从 Flash 文件的顶部调用此方法.
  3. 使用计时器来检测回调是否从未被调用.
  4. 更喜欢从 Flash 调用 Javascript 函数,而不是从 Javascript 调用 Flash 函数.无论哪种方式,您都无法调用尚未加载的函数.在从 Flash 调用它之前,保证浏览器已经完成加载您的 Javascript 函数比保证 Flash 在从 Javascript 调用它之前完成加载您的 Flash 函数要容易得多.

这是一个例子:

  • 我正在使用 swfobject 来嵌入 Flash.
  • 我使用 FlashVars 来告诉 Flash 调用哪个 Javascript 函数.如果页面上有多个 Flash 对象,这会很有用.
  • I am using swfobject to embed Flash.
  • I use FlashVars to tell Flash which Javascript function to invoke. This is useful if there are multiple Flash objects on the page.

闪光

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('<div id="flashObject"></div>');
        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);
}

这篇关于使用 Javascript 检测 Flash 应用程序是否正确加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆