代码之家  ›  专栏  ›  技术社区  ›  Nick

如何使用ExternalInterface获取javascript变量?

  •  0
  • Nick  · 技术社区  · 14 年前

    我正在尝试使用ActionScript(2.0)中的externalInterface.call函数获取包装文档中设置的javascript var值。下面的内容似乎在火狐和Chrome中都可以使用,但很自然地,它在IE(8)中不起作用。有人能推荐另一种方法来获取存储在这个变量上的值吗?谢谢!

    var linkPath = ExternalInterface.call("function(){return window.customLinkLocation;}", null);
    

    JavaScript:

    <head>
        <script type="text/javascript">
        var customLinkLocation = "http://localhost/file.xml";
        </script>
    </head>
    

    这是我嵌入SWF的方式吗??

     <body>
    <object width="550" height="400" id="mySwf">
    <param name="movie" value="mySwf.swf">
    <embed src="mySwf.swf" width="550" height="400">
    </embed>
    </object>
    
    6 回复  |  直到 10 年前
        1
  •  1
  •   Tim Down    14 年前
    ExternalInterface.call("window.customLinkLocation.toString");
    
        2
  •  1
  •   9re    14 年前

    您是否使用提供的ID嵌入SWF?

    http://forums.adobe.com/message/2638459#2638459

        3
  •  1
  •   Alin P.    14 年前

    从我的理解 documentation 以及一些(但不是太多)以前的经验:您需要通过提供函数的名称来调用函数。无法从ActionScript执行自定义代码。在这种情况下,您需要用JavaScript创建一个函数,返回您需要的值。

    function getCustomLinkLocation(){
        return customLinkLocation;
    }
    

    并打电话

    ExternalInterface.call("getCustomLinkLocation");
    

    我不知道为什么火狐和Chrome允许你调用一个匿名函数,但是ExternalInterface引用没有提到它。

    从ActionScript,您可以在HTML页面上执行以下操作:

    • 调用任何javascript函数。
    • 传递任意数量的参数,并使用任意名称。
    • 传递各种数据类型(布尔值、数字、字符串等)。
    • 从javascript函数接收返回值。
        4
  •  1
  •   Nick    14 年前

    知道了。问题是IE要求在“object”元素上使用classid属性。

    <object width="550" height="400" id="mySwf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
    <param name="movie" value="mySwf.swf">
    <embed src="mySwf.swf" width="550" height="400">
    </embed>
    </object>
    
        5
  •  0
  •   John    14 年前

    同时确保在嵌入代码中allowscriptaccess设置为“always”。

        6
  •  0
  •   Miki Berkovich    10 年前

    您也可以这样做:

    ExternalInterface.call("eval","getVar=function(obj){return obj}");
    var yourVar:String = ExternalInterface.call("eval","getVar(JSvar)");
    
    推荐文章