js怎么判断flash swf文件是否加载完毕

yizhihongxing

要判断 Flash 或 SWF 文件是否加载完毕,可以结合 JavaScript 和 SWFObject 插件实现。下面是详细的攻略:

步骤一:引入 SWFObject

首先需要在 HTML 页面中引入 SWFObject 插件,可以通过以下代码引入:

<script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>

步骤二:定义 Flash 容器

然后需要定义一个容器来显示 Flash 文件,以便在页面上加载 SWF 文件。可以使用以下 HTML 代码来创建容器:

<div id="myFlashContent">
  <p>It appears you don't have Adobe Flash Player installed. <a href="http://get.adobe.com/flashplayer">Click here to download it</a>.</p>
</div>

在这个代码中,myFlashContent 是容器的 ID,可以修改为其他名字。p 标签里的内容是在 Flash 没有加载的情况下显示的替代内容。

步骤三:加载 Flash 文件

接着,使用 swfobject.embedSWF() 方法来加载 Flash 文件。可以使用以下代码加载一个 Flash 文件:

swfobject.embedSWF("myFlash.swf", "myFlashContent", "300", "200", "10.0.0");

在这个代码中,myFlash.swf 是 Flash 文件的 URL,myFlashContent 是容器的 ID,300200 分别是容器的宽度和高度,10.0.0 是 Flash Player 的最低版本要求。

步骤四:添加加载侦听器

最后,使用 swfobject.getObjectById() 方法获取 Flash 对象,然后为其添加加载侦听器来判断 Flash 文件是否加载完毕。可以使用以下代码添加加载侦听器:

var flash = swfobject.getObjectById("myFlashContent");

if (flash) {
  if (flash.addEventListener) {
    flash.addEventListener("load", function() {
      console.log("Flash is loaded.");
    }, false);
  } else if (flash.attachEvent) {
    flash.attachEvent("onload", function() {
      console.log("Flash is loaded.");
    });
  }
}

在这个代码中,首先通过 swfobject.getObjectById() 方法获取 Flash 对象,然后判断 Flash 是否存在。如果存在,就添加 load 事件侦听器。侦听器可以使用 console.log() 来输出 Flash 是否加载完毕。

示例一:判断单个 Flash 文件加载

下面是一个完整的示例,用于判断单个 Flash 文件是否加载完毕:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Flash Loading Test</title>
  <script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
  <script>
    function onFlashLoaded() {
      console.log("Flash is loaded.");
    }

    window.onload = function() {
      var flashContent = document.getElementById("myFlashContent");

      swfobject.embedSWF("myFlash.swf", "myFlashContent", "300", "200", "10.0.0");

      if (flashContent) {
        var flash = swfobject.getObjectById("myFlashContent");

        if (flash) {
          if (flash.addEventListener) {
            flash.addEventListener("load", onFlashLoaded, false);
          } else if (flash.attachEvent) {
            flash.attachEvent("onload", onFlashLoaded);
          }
        }
      }
    }
  </script>
</head>
<body>
  <div id="myFlashContent">
    <p>It appears you don't have Adobe Flash Player installed. <a href="http://get.adobe.com/flashplayer">Click here to download it</a>.</p>
  </div>
</body>
</html>

在这个示例中, HTML 页面中定义了一个容器 myFlashContent,然后在 JavaScript 中使用 swfobject.embedSWF() 方法加载一个 Flash 文件。接着,使用 swfobject.getObjectById() 方法获取 Flash 对象,并添加 load 事件侦听器,输出加载完成信息。

示例二:判断多个 Flash 文件加载

如果需要判断多个 Flash 文件是否加载完毕,可以使用 Promise 来实现。下面是一个完整的示例,用于判断多个 Flash 文件是否加载完毕:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Flash Loading Test</title>
  <script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
  <script>
    function onFlashLoaded({ id }) {
      console.log(`Flash ${id} is loaded.`);
    }

    function loadFlash(url, id) {
      return new Promise((resolve, reject) => {
        const container = document.createElement("div");
        container.id = id;
        document.body.appendChild(container);

        swfobject.embedSWF(url, id, "300", "200", "10.0.0");

        const interval = setInterval(() => {
          const flash = document.getElementById(id);

          if (!flash || !flash.sendToActionScript) return;

          clearInterval(interval);

          flash.onload = () => {
            resolve({ id });
          };
        }, 100);
      });
    }

    window.onload = async function() {
      const flashUrls = [
        "myFlash1.swf",
        "myFlash2.swf",
        "myFlash3.swf",
      ];

      const flashPromises = flashUrls.map((flashUrl, index) => {
        const flashId = `flash_${index + 1}`;
        return loadFlash(flashUrl, flashId);
      });

      await Promise.all(flashPromises);

      console.log("All Flash files are loaded.");
    }
  </script>
</head>
<body>
</body>
</html>

在这个示例中,定义了一个 loadFlash() 函数,用于加载 Flash 文件并返回 Promise。新增一个 Promise 数组 flashPromises,为每个 Flash 地址调用 loadFlash() 函数,并且在 Promise 完成后输出加载完成信息。

这个示例中还实现了 Promise 超时控制,如果 Flash 文件加载超时则 Promise 被拒绝。

注意:这个示例使用了 async/await,浏览器版本需要在支持这些特性的范围内。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js怎么判断flash swf文件是否加载完毕 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 实例讲解java定时任务

    实例讲解Java定时任务的攻略如下: 1. 什么是Java定时任务? Java定时任务是指在预定的时间或间隔时间自动执行任务的一种机制,通常用于需要周期性执行的操作。Java常见的定时任务框架有Timer、ScheduledExecutorService和Quartz等。 2. Java定时任务的实现方式 2.1 Timer Timer是Java自带的定时任…

    Java 2023年6月1日
    00
  • Spring Boot整合JWT的实现步骤

    下面是详细讲解Spring Boot整合JWT的实现步骤的完整攻略。 概述 JWT(JSON Web Token)是目前比较流行的身份验证和授权机制,它将用户的身份信息封装在 JSON 格式的 Token 中,在多个服务之间传递。Spring Boot是一种基于Spring框架的快速开发工具,支持构建独立的、生产级别的 Spring 应用程序。将Spring…

    Java 2023年5月19日
    00
  • Java文件IO操作教程之DirectIO的意义

    Java文件IO操作教程之DirectIO的意义 在Java文件IO操作中,DirectIO(即直接内存映射文件I/O)是一种非常有用的技术,它可以通过直接在物理内存与磁盘文件之间建立映射,来实现快速的文件读取和写入。这种技术在处理大文件和高并发读写场景中表现尤为突出。本篇教程将为大家详细讲解DirectIO的意义以及使用方法。 DirectIO的优势 相比…

    Java 2023年5月20日
    00
  • Mybatis-plus与Mybatis依赖冲突问题解决方法

    Mybatis-plus是基于Mybatis的增强框架,它在Mybatis的基础上提供了一些实用、便捷的功能。但是,在开发过程中,我们有可能会遇到Mybatis-plus和Mybatis依赖冲突的问题。本文将针对这一问题给出完整的解决方法,包括具体的示例演示。 完整攻略 1. 了解冲突原因 首先,我们需要了解冲突的原因。Mybatis-plus和Mybati…

    Java 2023年5月20日
    00
  • Java下载文件的4种方式总结

    以下是Java下载文件的4种方式总结的详细攻略: 一、通过URL类下载文件 Java中可以通过URL类来下载远程文件,具体步骤如下: 创建一个URL对象,指定远程文件的URL地址; URL url = new URL("http://example.com/file/file.txt"); 打开URL连接; URLConnection c…

    Java 2023年5月20日
    00
  • java 如何将多种字符串格式 解析为Date格式

    要将多种字符串格式解析为Date格式,可以借助Java中的SimpleDateFormat类来实现。下面是完整的攻略: 确认要解析的日期字符串的格式在解析日期字符串之前,需要先确认要解析的日期字符串的格式。Java中通常使用日期格式化字符串来表示不同格式的日期字符串。例如,“yyyy-MM-dd HH:mm:ss”表示年份-月份-日时:分:秒的日期格式,而“…

    Java 2023年5月20日
    00
  • Java 实现倒计时功能(由秒计算天、小时、分钟、秒)

    那我来为您详细讲解Java实现倒计时功能的步骤和示例。 首先,我们需要定义一个倒计时的时间间隔,例如30秒: int countDownTime = 30; // 定义倒计时时长,单位为秒 然后,我们需要定义一个计时器,使用Java的Timer和TimerTask类。 Timer timer = new Timer(); 接着,我们需要编写一个倒计时的任务,…

    Java 2023年5月20日
    00
  • java实现从方法返回多个值功能示例

    下面是Java实现从方法返回多个值的攻略。 实现方式 Java中可以使用以下几种方式来实现从方法返回多个值的功能: 将多个值封装到一个对象中 使用数组或列表(List) 使用Map 将多个值封装到一个对象中 我们可以定义一个类,将需要返回的多个值封装到它的属性中。例如,假设我们需要返回一个人的姓名、年龄和性别,可以这样定义一个Person类: public …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部