Flex应用中利用ExternalInterface API取得JavaScript返回值的例子

By Minidxer | March 12, 2008

在前面的Flex中利用ExternalInterface的API调用JavaScript函数的例子中,我们了解到了Flex应用中调用JavaScript函数。

接下来的例子展示了Flex应用中如何调用JavaScript函数并且使用返回值。

下面是具体的例子以及源代码:


Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- http://blog.flexexamples.com/2008/03/11/returning-values-from-javascript-in-your-flex-applications-using-the-externalinterface-api/ -->
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  4.         layout="vertical"
  5.         verticalAlign="middle"
  6.         backgroundColor="white">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.utils.ObjectUtil;
  11.  
  12.             private function callJavaScript():void {
  13.                 var keys:Array = "appCodeName,appName,appVersion,cookieEnabled,language,platform,systemLanguage,userAgent,userLanguage".split(",");
  14.                 var arr:Array = ExternalInterface.call("getNavigatorObject", keys);
  15.                 dataGrid.dataProvider = arr;
  16.             }
  17.         ]]>
  18.     </mx:Script>
  19.  
  20.     <mx:ApplicationControlBar dock="true">
  21.         <mx:Button label="Get browser navigator object"
  22.                 click="callJavaScript();" />
  23.     </mx:ApplicationControlBar>
  24.  
  25.     <mx:DataGrid id="dataGrid"
  26.             variableRowHeight="true"
  27.             width="100%"
  28.             height="100%" >
  29.         <mx:columns>
  30.             <mx:DataGridColumn dataField="key"
  31.                     width="120" />
  32.             <mx:DataGridColumn dataField="value"
  33.                     wordWrap="true" />
  34.         </mx:columns>
  35.     </mx:DataGrid>
  36.  
  37. </mx:Application>

下面是JavaScript文件(/src/externalInterface.js):

  1. // JavaScript
  2. /** http://blog.flexexamples.com/2008/03/11/returning-values-from-javascript-in-your-flex-applications-using-the-externalinterface-api/ */
  3. function getNavigatorObject(keys) {
  4.     var arr = [];
  5.     var i;
  6.     var len = keys.length;
  7.     var key;
  8.     var value;
  9.     for (i=0; i<len; i++) {
  10.         key = keys[i];
  11.         value = navigator[key];
  12.         arr.push({key:key, value:value});
  13.     }
  14.  
  15.     return arr;
  16. }

下面是HTML文件中需要添加的内容(/html-template/index.template.html):

  1. <head>
  2. ...
  3. <script language="JavaScript" src="externalInterface.js"></script>
  4. </head>
下面是执行实例(可以右键察看源代码):

Topics: Flex | No Comments » | Tags: , , ,

Search Posts