javascript调用Flash里对象的方法(函数)搞了五个小时。

搞了几个小时后,才发现,之前走的路是错的。

今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了,

一搞就整整搞了一个下午。

我记得之前我用Flash8的时候没有遇到过这样的问题。

我的程序大概是这样,我用Flash制作了一个菜单,默认情况下,打开网页时,这个菜单隐藏,当鼠标放在一个小图标上后,这个菜单显示出来,并且会根据当前的网页数据情况,显示菜单中的几项,同时隐藏几项不需要显示的菜单项。

我在Flash中使用ExternalInterface.addCallback 注册了一个方法名叫:setMenuItemVisible(b:Boolean)

打算在网页中的javascript中调用。

可谁知程序写好后,在IE浏览器下运行一切正常,但在Firefox上老是提示错误:

无法在javascript中调用 setMenuItemVisible() 方法。

我开始到百度去搜索,找了一个多小时后,终于找到了一篇文件:

http://www.coolcode.cn/show-291-1.html

我把这篇内容在我的百度空间收藏了一下:
http://hi.baidu.com/personnel/blog/item/8c04cd119effe919b8127b47.html

原来因为浏览器的原因,如果在IE以外的大多数浏览器上执行javascript调用Flash中的函数时,一般要在 window.onload=function(){载入Flash}
不然,在Flash中注册的一些对外的函数将无法在javascript中调用。

本来以为到这里原因找到了,可是接下来又遇到了一个非常头痛的问题。

因为我的Flash是先隐藏,在javascript触发事件后,才显示,我使用的是

flash.style.display="none";
flash.style.display="";

在Firefox上测试的时候发现,当在这显示和隐藏两种状态下转换的时候,每次Flash都会重新载入一次,真晕!

后来又到百度搜索了一下,找到了这么一篇文章,现在我收藏了一下:

http://hi.baidu.com/personnel/blog/item/a8f40fb3025decaed8335a43.html

最终重写了Flash代码,因为之前的代码逻辑上在Firefox上不是好办法。

2009-08-12

时间: 2024-10-06 11:17:40

javascript调用Flash里对象的方法(函数)搞了五个小时。的相关文章

在JavaScript中重写jQuery对象的方法

jQuery是一个很好的类库,它给我们解决了很多的客户端编程,任何东西都不是万能的,当它不能满足我们的需求时我们需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能:我现在的web应用程序大多数时候的数据交互都是通过Ajax来完成的,这样就可以将一些隐藏字段的数据保存在HTML标签的属性中,使HTML标签的代码量减少,如:ID,Timestamp等等,这些不需要用户输入但又不得不提交的字段,通过表单提交的做法是 <input name="ID" value="

JavaScript中创建自定义对象的方法

本文内容参考JavaScript高级程序设计(第3版)第6章:面向对象的程序设计 ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”我所理解的就是对象就是一个结构体,结构体中有一些它的基本属性以及对结构体处理的方法,把它们封装起来称为一个整体.JS中所有的对象都是基于一个引用类型创建,这个引用类型可以是原生类型,如Array,Date等,也可以是开发人员自定义的类型. 下面主要总结下JS中创建对象的几种模式,分析他们各自的优缺点. 1. 工厂模式 /****

Android中Webview使用javascript调用事先定义好的Java函数

1. 首先定义好一个类,专们用于给javascript调用 public class JavaScriptInterface { // share your news public void share(String newsImageUrl, String newsTitle, String newsUrl) { Intent intent = new Intent(ActivityHomeRang.this, ActivityShare.class); Bundle news = new B

总结调用Flash的几种方法

一.Adobe 提供的方法 <object width="200" height="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#4,0,0,0"> <param name="

Javascript 中创建自定义对象的方法(设计模式)

Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. 1 var student = new Object(); 2 student.name = "xiao ming"; 3 student.age = 20; 4 student.getName = function () { 5 alert(this.name); 6 } 熟悉javascrip

javascript 自动绑定JS callback 的方法函数

自己写的一个javascript 智能绑定callback 并且调用执行的函数,主要用于异步请求的 ajax中: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <script> /** * @author [email 

JavaScript自定义类和对象的方法

备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object;         Obj.name = 'sun';         Obj.showName = function() {    alert('this.name');} 2. 使用构造函数来定义类(原型对象) function Obj(name) {         this.name = name;      

python中的嵌套类(内部类调用外部类中的方法函数)

在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一个想法调试,真的失败了三四十次,PRINT了N多~~~:) class DiagramFactory: @classmethod def make_diagram(Class, width, height): return Class.Diagram(width, height) @classmet

JavaScript中的string对象及方法

string对象 string对象的两种创建 var a="hello"; var b=new String("hello"); //下面是方法 //charAt()根据下标 找字符串中的字符  alert(a.charAt(3));//根据下标返回字符串某个字符  alert(a.charAt(10));//空的,找不到这个下标 //charCodeAt()返回指定位置的字符   var a="Hello world!Hello world!"