AS3 navigateToURL导致ExternalInterface 执行失败问题

我们先看下面代码:


代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<!--[CDATA[
import flash.external.ExternalInterface;
private function init1():void
{
var url:String = "javascript:alert('执行navigateToURL');";
var request:URLRequest = new URLRequest(url);
navigateToURL(request,"_self");
}
private function init2():void
{
ExternalInterface.call("function function1(){alert('执行ExternalInterface');}");
}
private function clickfun():void
{
ExternalInterface.call("function function2(){window.document.title = '更改后的标题';}");
}
]]-->
</mx:Script>
<mx:Button x="150" y="92" label="1" click="init1()"/>
<mx:Button x="544" y="92" label="2" click="init2()"/>
<mx:Button x="404" y="315" label="更改标题" click="clickfun()"/>
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
<!--[CDATA[
import flash.external.ExternalInterface;

private function init1():void
{
var url:String = "javascript:alert('执行navigateToURL');";
var request:URLRequest = new URLRequest(url);
navigateToURL(request,"_self");
}
private function init2():void
{
ExternalInterface.call("function function1(){alert('执行ExternalInterface');}");
}

private function clickfun():void
{
ExternalInterface.call("function function2(){window.document.title = '更改后的标题';}");
}

]]-->
</mx:Script>
<mx:Button x="150" y="92" label="1" click="init1()"/>
<mx:Button x="544" y="92" label="2" click="init2()"/>
<mx:Button x="404" y="315" label="更改标题" click="clickfun()"/>

</mx:Application>

函数init1和init2都是通过javascript弹出提示框,clickfun()为修改网页标题。
3个函数单独执行都是成功的,但当
1.先执行init1函数后再调用clickfun函数,会发现clickfun执行失败。
2.先执行init2函数后再调用clickfun函数,会发现clickfun执行成功。
难道是navigateToURL会导致ExternalInterface 执行失败??请知道原因的朋友指导下。

(0)

相关推荐

  • c# 接口interface基础入门小例子

    复制代码 代码如下: /// <summary>    /// interface    /// 与抽象类的区别:    /// 1,abstract可以有具体方法和抽象方法(必须有一个抽象方法),interface没有方法实现    /// 2,abstract可以有构造函数和析构函数,接口不行    /// 3,一个类可以实现多个interface,但只能继承一个abstract    /// 特点:    /// interface成员隐式具有public,所以不加修饰符    ///

  • c#中的interface abstract与virtual介绍

    interface用来声明接口1.只提供一些方法规约,不提供方法主体.  如: 复制代码 代码如下: public interface IPerson{    void getName();//不包含方法主体} 2.方法不能用public abstract等修饰,无字段变量,无构造函数.3.方法可包含参数.  如 复制代码 代码如下: public interface IPerson  {    void getAge(string s);  } 一个例子(例1): 复制代码 代码如下: pub

  • C#接口(Interface)用法分析

    本文实例分析了C#接口(Interface)用法.分享给大家供大家参考.具体分析如下: 继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的 1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法. 2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它们都继承

  • Go语言interface详解

    interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单的说,interface是一组method的组合,我们通过interface来定义对象的一组行为. 我们前面一章最后一个例子中Student和Employee都能SayHi,虽然他们的内部实现不一样,但是那不重要,重要的是他们都能say hi 让我们来继续做更多的扩展,Student和Employe

  • 领悟php接口中interface存在的意义

    可能大家都懂这些,作为不懂的我猜测了一下这个interface的意义,他就是为了后面调用的时候再调用的方法中调用实现类中interface中存在的内容,好绕口啊,写个例子留作以后看吧pay.php 复制代码 代码如下: interface Ipay{ function withmoney(); //function withinternet();}class Dmeng implements Ipay{ function withmoney() {  echo "花人民币买东西"; }

  • PHP abstract与interface之间的区别

    1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : 复制代码 代码如下: interface Shop {       public function buy($gid);       public function sell($gid);       publi

  • JavaScript接口实现代码 (Interfaces In JavaScript)

    在实际中,我们可以在注释中定义好接口,在实际的代码中予以实现 比如: 复制代码 代码如下: /* interface Composite { function add(child); function remove(child); function getChild(index); } interface FormItem { function save(); } */ var CompositeForm = function(id, method, action) { // implement

  • C#中接口(interface)的理解

    .都是"虚的"不能被实例化,这也是接口中为什么不能包含字段--成员变量的原因. 2.正因为接口是虚的,所以接口内的索引,属性,时间等只能有声明,而不能在接口内实现,具体如何实现是派生接口或者派生类的事. 3.都具有模板的性质,如果一个接口或者类从某一个接口继承,它将自动具有被集成者的特征(包括索引,属性,函数,实践等). 4.接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力. 下面是接口的一个简单定义: 复制代码 代码如下: interface  SampIn

  • java interface的两个经典用法

    本文为大家分享了java interface的两个经典用法,供大家参考,具体内容如下 1.Java多态接口动态加载实例 编写一个通用程序,用来计算没一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都为3个整数A.B.C的表达式.现有两种工具:Car和Plane,其中Car的速度运算公式为:A+B+C.需要编写三个类:ComputeTime.java,Palne.java,Car.java和接口Common.java.要求在未来如果增加第3中交通工具的时候,不必修改 以前的任何程序,

  • java abstract class interface之间的区别介绍

    含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的.abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法.如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型. 接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须

随机推荐