`
唐朝
  • 浏览: 260736 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

AS3的ExternalInterface在firefox下失效的原因

阅读更多

document.getElementById("object_id").functionName();在Firefox下失效。

 

主要的原因是id的 定位问题。

 

Object的id只能对IE起作用,而在FF里,这里的id应该是embed对象的。而FLEX自己带的模版并没有设置embed对象的ID,而只设置了它的name属性,因此而引起无法正确调用FLASH内部的程序(因为根本找不到FLASH)。

 

解决:首先要在FLEX模版目录的index.template.html中找到embed这个东西,然后在它的后面追加id="testid",大概看起来象这样:embed id="testid"…,这个地方是在不支持脚本的时候生成的,支持脚本的情况下,FLASH的显示是由AC_OETags.js来控制动态生成的,同样,编辑AC_OETags.js,找到str += "<embed 这句,同样在后面加上id="testid"。

 

最后页面上应该是这个样子:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
  		id="myplayer" width="582" height="468" 
  		codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
  	<param name="movie" value="myplayer.swf" />
  	<param name="quality" value="high" />
  	<param name="bgcolor" value="#869ca7" />
  	<param name="allowFullScreen" value="true" />
  	<param name="allowScriptAccess" value="always" />
  	<embed id="mp" src="myplayer.swf" quality="high" bgcolor="#869ca7" 
  		width="582" height="468" name="myplayer" align="middle"
  		play="true"
  		loop="false"
  		quality="high"
  		allowScriptAccess="always"
  		allowFullScreen="true"
  		type="application/x-shockwave-flash"
  		pluginspage="http://www.adobe.com/go/getflashplayer"
  		"wmode","transparent">
  	</embed>
  	</object>

 

另附上浏览器类型判断的js脚本:

function getOs()
	{
	   if(navigator.userAgent.indexOf("MSIE")>0)return 1;
	   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)return 2;
	   if(isSafari=navigator.userAgent.indexOf("Safari")>0)return 3;   
	   if(isCamino=navigator.userAgent.indexOf("Camino")>0)return 4;
	   if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0)return 5;
	   return 0;
	}

 

 

 

分享到:
评论
1 楼 surpass_li 2010-02-27  
哦,学习了,谢谢分享,收录了。

相关推荐

    AS3与C#交互,有返回值

    - **调用方法**:通过`ExternalInterface.call`在AS3端调用C#中的方法。 - **处理返回值**:C#端通过`axShockwaveFlash1.SetReturnValue`设置返回值。 - **事件处理**:C#端使用`axShockwaveFlash1_FlashCall`事件...

    as3.0利用ExternalInterface与js交互的播放器

    在本文中,我们将深入探讨如何在AS3.0(ActionScript 3.0)中使用ExternalInterface类与JavaScript进行交互,特别是在实现一个自定义播放器的场景中。这个主题是针对那些希望在网页中集成Flash内容并与网页的...

    ExternalInterface

    需要注意的是,`addCallback`仅在某些特定环境下有效,如Windows上的Internet Explorer使用NPRuntime API,以及Mozilla 1.7.5及更高版本的Firefox。在不支持的环境中尝试使用`addCallback`可能会触发`SecurityError`...

    Flash as3调用外部AS脚本

    反过来,也可以在JavaScript中定义一个函数,然后在AS3中通过`ExternalInterface.call`来调用它。 不过,这个场景下提到的`test.fla`是一个Flash的工程文件,通常包含舞台上的对象、时间轴上的动作脚本以及项目的...

    AS3与JS通信

    AS3代码中,我们可以使用`flash.external.ExternalInterface.addCallback`函数注册一个方法供JavaScript调用,同时在JavaScript中通过`ExternalInterface.call`来调用AS3的方法。这样,AS3可以向JS暴露功能,反之...

    VC2005和Flash AS3通信

    在AS3中,我们可以创建一个全局的ExternalInterface,该接口允许AS3代码与JavaScript或宿主环境(如VC++)进行通信。在AS3代码中,我们需要声明要暴露给外部调用的函数,例如: ```actionscript import flash....

    Flash as3 cookie 操作实例源码

    - 在服务器端获取Cookie后,可以通过XMLSocket或ExternalInterface与AS3通信,将Cookie传递回来。 3. **删除Cookie**: - 删除Cookie是通过设置过期日期到过去来实现的。例如: ```as3 var removeCookieHeader:...

    AS3获取JS回传值

    在跨平台的Web开发中,AS3(ActionScript 3.0)与JavaScript的交互是一项重要的技术,尤其在处理Flash内容时。本教程将详细解释如何实现AS3获取JavaScript回传的值,并将这些值显示在Flash的文本框中。由于这种交互...

    Flash(AS3)和C#之间的相互函数调用(例子)

    - AS3代码中,使用`ExternalInterface.addCallback()`注册一个函数,使其可以在JavaScript或插件中被调用;使用`ExternalInterface.call()`则可以调用JavaScript或插件的方法。 5. **C#端实现**: - 在C#端,我们...

    air内嵌网页 as3

    在移动应用开发领域,Adobe AIR(Adobe Integrated Runtime)是一个强大的跨平台框架,它允许开发者使用ActionScript 3(AS3)或Flex来构建桌面和移动应用程序。这些应用程序可以利用AIR运行时环境,实现与本地系统...

    FLASH CS3(AS3)和JS之间通信

    标题“FLASH CS3(AS3)与JS之间通信”涉及的是两种主要的Web技术——Adobe Flash(使用ActionScript 3,简称AS3)和JavaScript之间的交互。这两种技术在Web开发中各自发挥着重要作用,Flash主要用于动画和多媒体内容...

    delphi通过ExternalInterface与flash交互

    ExternalInterface在我看来就是flash为了外部程序的调用所声明的接口。看到论坛里有好多人问但是回答的就不是很多,就把自己做的一个简单的例子放上来.写的不好,希望能抛砖引玉,大侠勿拍!!这个是里面用到的flash...

    As3完全自学手册例子.rar

    10. **外部接口**:AS3可以与JavaScript进行交互,通过`ExternalInterface`类调用网页中的JavaScript函数或接收来自JavaScript的消息。 这本自学手册例子应该包含了一系列的实践项目,通过这些例子,你可以逐步理解...

    flex与js交互 关于ExternalInterface使用的小例子

    3. **调用JavaScript函数**:在Flex中,你可以通过`ExternalInterface.call`方法调用JavaScript函数。例如: ```actionscript var result:Object = ExternalInterface.call("jsFunctionName", "参数1", "参数2"); ...

    as2/3与js相互调用实例 源码

    此压缩包提供的源码实例可能是为了展示如何在AS2、AS3和JS之间建立通信,以便在Flash和网页之间共享数据和控制行为。 1. **AS2与JS的交互**: AS2通过`ExternalInterface`类与JavaScript进行通信。在AS2中,`...

    AS3与JS交互通信(使用swfObject插入Flash)

    ·Firefox 14 ·Chromium 22 ·Chrome 21 (*Chrome 21使用新的PPAPI类型Flash Player插件,由于其安全沙箱特性,无法在本地进行访问,因此需要在互联网或IIS等虚拟站点测试运行。禁用PPAPI使用NPAPI类型的Flash ...

    AS3与JaveScript之间的通讯视频讲解

    例如,在AS3中创建一个事件,并通过`ExternalInterface.call()`传递到JavaScript,然后在JavaScript中注册事件监听器进行处理。 5. **安全性考虑**: 虽然`ExternalInterface`提供了一种强大的交互方式,但也可能...

    C#winform与as通信

    2. **Flash通信接口**: AS3中,你可以定义一个ExternalInterface接口,它允许AS代码与JavaScript或宿主环境(在这种情况下是C#)进行通信。在AS3中,使用`ExternalInterface.addCallback`方法注册可从外部调用的函数...

    AS3.0与JS交互

    在现代Web开发中,Flash(ActionScript 3.0,简称AS3.0)与JavaScript(JS)的交互是常见的技术需求,特别是在实现富互联网应用(RIA)时。这种交互能力使得网页上的Flash内容能够与JavaScript环境进行通信,从而...

    as3 与js相互通信

    3. **跨域通信**:在某些情况下,利用AS3与JS通信可以绕过浏览器的同源策略限制,实现跨域数据获取。 4. **游戏交互**:游戏中的得分、状态等信息可以实时更新到网页上,提供更好的用户体验。 5. **API集成**:将...

Global site tag (gtag.js) - Google Analytics