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

要判断 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集合使用时需要注意的事项 在Java开发中,集合框架扮演了非常重要的角色。它可以通过高效地存储和访问数据来简化我们的开发工作。本文将介绍在使用Java集合框架时需要注意的六件事。 1. 选择合适的集合类型 在使用集合框架时,我们需要根据要解决的问题选择合适的集合类型。例如,如果我们需要用于快速查找元素和按键访问元素的数据结构,则HashMap可能…

    Java 2023年5月25日
    00
  • 什么是Java程序优化?

    什么是Java程序优化? Java程序优化是指通过改进Java程序的设计、编写和运行方式,以提高程序性能、内存使用效率和响应速度的过程。Java程序优化在一个高质量、可维护、具有高性能的Java应用程序的开发过程中非常重要。以下是一些Java程序优化的实践方法和建议。 不要浪费内存: 在Java程序中,尤其是在Java Web应用程序中,内存是非常有限的资源…

    Java 2023年5月11日
    00
  • Java JDBC API介绍与实现数据库连接池流程

    Java JDBC API介绍与实现数据库连接池流程 JDBC API介绍 Java Database Connectivity(JDBC)是一个Java API,让Java应用程序与关系型数据库进行交互。JDBC API允许开发人员执行SQL查询和更新以及事务处理。 JDBC API的主要组成部分是: DriverManager类:负责创建数据库连接。 C…

    Java 2023年5月19日
    00
  • kafka安装部署超详细步骤

    Kafka安装部署超详细步骤 Apache Kafka是一个开源流处理平台,由Apache软件基金会开发。它是用Scala和Java编写的,并具有高吞吐量,高可靠性和可扩展性等特性。在这里,我们将详细讲解如何在Linux系统上安装和部署Kafka。 步骤一:安装Java Kafka是Java编写的,因此,首先需要安装Java。 在终端中输入以下命令: sud…

    Java 2023年5月20日
    00
  • SpringBoot controller参数校验方法详细讲解

    下面我就为您讲解一下“SpringBoot controller参数校验方法详细讲解”的攻略。 一、前言 Spring Boot 是一个非常流行的 Java 开发框架,可用于快速构建高效率的应用程序。在我们使用 Spring Boot 进行开发的过程中,请求参数的校验也是非常重要的一环。本文将详细讲解 Spring Boot Controller 参数校验的…

    Java 2023年5月20日
    00
  • Python如何判断数独是否合法

    判断数独是否合法,可以使用Python的代码实现。下面是Python如何判断数独是否合法的完整攻略。 步骤一:读取数独矩阵 首先,需要读取数独矩阵,将其转换为一个9×9的二维数组。可以使用Python的input()函数或者从文件中读取的方式进行读取。另外,为了方便判断,数独中未填写的格子使用0表示。 示例代码: # 读取数独矩阵 matrix = [] f…

    Java 2023年5月23日
    00
  • springboot日期格式化及时差问题分析

    下面我将为你介绍有关“springboot日期格式化及时差问题分析”的完整攻略。 1. 前言 在日常开发中,很多场景需要对时区、日期格式进行处理,如果不处理好,就可能会导致一些问题,如时差问题等,本文将介绍如何使用SpringBoot来处理日期格式化及时差问题。 2. 日期格式化 在Java中,日期格式化主要是通过SimpleDateFormat类实现。在S…

    Java 2023年5月20日
    00
  • Mybatis查询语句结果集的总结大全

    针对“Mybatis查询语句结果集的总结大全”的完整攻略,我将为您提供详细的讲解。以下是整个攻略的步骤: 1. 前言 在讲解Mybatis查询语句结果集之前,我们先了解两个概念: Statement:在JDBC中,Statement接口是用于执行静态SQL语句并返回其结果的主要对象之一。Statement接口可以理解为需要我们自己手动编写SQL语句并执行的方…

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