flash与js通讯方法

yizhihongxing

Flash与JS通讯是前端开发中经常遇到的问题,下面我来为大家详细讲解一下Flash与JS通讯方法的完整攻略。

Flash与JS通讯方法

Flash与JS之间的通讯一般通过两种方式,一种是Flash调用JS方法,另一种是JS调用Flash方法。下面分别详细讲解这两种方式。

Flash调用JS方法

Flash调用JS方法是通过ExternalInterface实现的,其中调用的语法如下:

ExternalInterface.call("javascript_function_name", args...)

其中,javascript_function_name是要调用的JS方法名,args...是传递给JS方法的参数。

下面是一个Flash调用JS方法的示例代码:

import flash.external.ExternalInterface;

ExternalInterface.call("jsMethod", "Hello World!");

这个示例代码会调用名为jsMethod的JS方法,处理字符串参数Hello World!

JS调用Flash方法

JS调用Flash方法主要是通过document.getElementById("flashId")获取Flash对象,在获取到Flash对象后,调用其提供的方法。下面是具体的示例代码:

// 获取Flash对象
var flashObj = document.getElementById("flashId");
// 调用Flash方法
flashObj.flashMethod("Hello World!");

上面这段代码中,flashObj变量获取到的就是idflashId的Flash对象,之后就可以调用其中的flashMethod方法,并传递字符串参数Hello World!

Flash与JS通讯注意事项

以上两种方法虽然简单,但在实际应用中还有一些需要注意的事项:

  1. ExternalInterface.call()方法仅适用于IE、Firefox、Chrome和Safari浏览器,不适用于Opera;
  2. 对于调用JS方法或JS调用Flash方法,两者必须在同一域名下,在不同域名下通讯会出现安全问题;
  3. 在Flash中使用ExternalInterface调用JS方法时,必须在HTML页面中嵌入Flash时,在<object><embed>标签中添加<param name="allowScriptAccess" value="always" />,否则会抛出异常。

示例说明

下面提供两个使用Flash与JS通讯的示例。

示例一

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Flash与JS通讯示例一</title>
    <script>
        function flashCallback(msg) {
            alert(msg);
        }
    </script>
</head>
<body>
    <object id="flashId" width="0" height="0" type="application/x-shockwave-flash">
        <param name="movie" value="flash.swf" />
        <param name="allowScriptAccess" value="always" />
    </object>
    <button onclick="document.getElementById('flashId').flashMethod('Hello World!')">Click Me</button>
</body>
</html>

Flash代码:

// ExternalInterface回调函数
ExternalInterface.addCallback("flashMethodCallback", null, flashMethodCallback);

// flashMethod方法
function flashMethod(msg:String):void {
    ExternalInterface.call("flashCallback", "Flash调用JS方法:" + msg);
}

// JS回调函数
function flashMethodCallback(msg:String):void {
    trace("JS调用Flash方法:" + msg);
}

在该示例中,Flash调用JS的回调函数为flashCallback,而JS调用Flash的回调函数为flashMethodCallback,通过这两个回调函数实现登录验证。

示例二

HTML代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Flash与JS通讯示例二</title>
    <script>
        function flashCallback(msg) {
            alert(msg);
        }
    </script>
</head>
<body>
    <object id="flashId" width="100%" height="100%" type="application/x-shockwave-flash">
        <param name="movie" value="flash.swf?rand=Math.random()" />
        <param name="allowScriptAccess" value="always" />
    </object>
    <button onclick="document.getElementById('flashId').flashMethod('Hello World!')">Click Me</button>
</body>
</html>

Flash代码:

// ExternalInterface回调函数
ExternalInterface.addCallback("flashMethodCallback", null, flashMethodCallback);

// flashMethod方法
function flashMethod(msg:String):void {
    ExternalInterface.call("flashCallback", "Flash调用JS方法:" + msg);
}

// JS回调函数
function flashMethodCallback(msg:String):void {
    trace("JS调用Flash方法:" + msg);
}

在该示例中,JS调用Flash的回调函数同样为flashMethodCallback,Flash通过Math.random()获取到不同的随机数,避免Flash缓存问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flash与js通讯方法 - Python技术站

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

相关文章

  • JavaScript闭包 懂不懂由你反正我是懂了

    JavaScript闭包是一种非常重要的概念,它在JavaScript开发中有着广泛的应用。对于初学者,理解闭包通常是比较难的,但只要掌握了闭包的基本原理,它对于我们掌握JavaScript编程技能将会带来很大的帮助。 什么是JavaScript闭包? JavaScript闭包指的是访问定义在函数内部作用域里的变量的函数。通俗来说,是在函数中定义并返回另一个…

    JavaScript 2023年6月10日
    00
  • Three.js Interpolant实现动画插值

    对于使用Three.js实现动画插值这一话题,我们可以从以下几个方面来进行详细讲解: 什么是动画插值? 为什么要使用Interpolant实现动画插值? Three.js Interpolant的使用方法及示例。 什么是动画插值? 首先我们来了解一下什么是动画插值。 在计算机动画中,我们通常使用一个个关键帧(keyframe)来描述动画的状态。而这些关键帧之…

    JavaScript 2023年5月28日
    00
  • 揭开iOS逆向解密的神秘面纱

    揭开iOS逆向解密的神秘面纱攻略 背景 iOS逆向解密是指通过对iOS应用进行逆向工程分析,获取应用的源代码、关键算法、加密算法等信息的过程。这种技术在黑客攻击、应用安全测试等领域有很大的应用。本篇攻略将介绍iOS逆向解密的基本流程和一些实用技巧。 步骤 iOS逆向解密的基本步骤包括以下几个方面: 准备逆向工具 IDA Pro(逆向分析工具) Hopper(…

    JavaScript 2023年5月28日
    00
  • 基于React路由跳转的几种方式

    根据你的需求,我会简要介绍一下关于基于React路由跳转的几种方式,并提供两个实例说明。 1. React Router React Router 是一个开源库,可以帮助我们创建单页应用。它可以轻松管理路由,并帮助我们构建动态 UI。React Router 的基本用法如下: import { BrowserRouter as Router, Route, …

    JavaScript 2023年6月11日
    00
  • JS简单添加元素新节点的方法示例

    下面我来详细讲解“JS简单添加元素新节点的方法示例”的完整攻略。 什么是添加新节点? 在 JavaScript 中,向 HTML 文档中添加节点(节点就是 HTML 元素)的过程称为添加新节点。 添加新节点的方法 使用 JavaScript 可以轻松地添加新节点到 HTML 页面中。下面我们来看看两个添加新节点的示例方法。 方法一:appendChild()…

    JavaScript 2023年6月10日
    00
  • JavaScript中原型和原型链详解

    原型和原型链是 JavaScript 中非常重要的概念,理解它们对于学习和使用 JavaScript 语言是至关重要的。下面将为大家详细讲解 JavaScript 中原型和原型链的概念。 什么是原型 在 JavaScript 中,每个对象都有一个原型,原型本质上是一个对象。对象通过原型继承属性和方法。每个新对象都隐式地引用了其构造函数的原型作为其内部对象。可…

    JavaScript 2023年6月10日
    00
  • 使用validate.js实现表单数据提交前的验证方法

    实现表单数据提交前的验证是优化用户体验的重要步骤之一,这可以避免用户不必要的等待和提交失败的情况。validate.js 是一个轻量级的 JavaScript 库,可用于在提交前对表单数据进行验证,能够省去自己写正则表达式的麻烦,极大地简化表单验证的过程。 下面将介绍使用 validate.js 实现表单验证的具体步骤: 步骤 1:导入库 第一步是导入 va…

    JavaScript 2023年6月10日
    00
  • Javascript Date getUTCHours() 方法

    以下是关于JavaScript Date对象的getUTCHours()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getUTCHours()方法 JavaScript Date对象getUTCHours()方法返回当前日期的小时数,以协调世界(UTC)为基准。返回值是一个0到23之间的整数下面是使用Date对象的getUTCHo…

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