Mar 12
在前面的Flex中利用ExternalInterface的API调用JavaScript函数的例子中,我们了解到了Flex应用中调用JavaScript函数。
接下来的例子展示了Flex应用中如何调用JavaScript函数并且使用返回值。
下面是具体的例子以及源代码:
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/11/returning-values-from-javascript-in-your-flex-applications-using-the-externalinterface-api/ -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- import mx.utils.ObjectUtil;
- private function callJavaScript():void {
- var keys:Array = "appCodeName,appName,appVersion,cookieEnabled,language,platform,systemLanguage,userAgent,userLanguage".split(",");
- var arr:Array = ExternalInterface.call("getNavigatorObject", keys);
- dataGrid.dataProvider = arr;
- }
- ]]>
- </mx:Script>
- <mx:ApplicationControlBar dock="true">
- <mx:Button label="Get browser navigator object"
- click="callJavaScript();" />
- </mx:ApplicationControlBar>
- <mx:DataGrid id="dataGrid"
- variableRowHeight="true"
- width="100%"
- height="100%" >
- <mx:columns>
- <mx:DataGridColumn dataField="key"
- width="120" />
- <mx:DataGridColumn dataField="value"
- wordWrap="true" />
- </mx:columns>
- </mx:DataGrid>
- </mx:Application>
下面是JavaScript文件(/src/externalInterface.js):
Download: externalInterface.js
- // JavaScript
- /** http://blog.flexexamples.com/2008/03/11/returning-values-from-javascript-in-your-flex-applications-using-the-externalinterface-api/ */
- function getNavigatorObject(keys) {
- var arr = [];
- var i;
- var len = keys.length;
- var key;
- var value;
- for (i=0; i<len; i++) {
- key = keys[i];
- value = navigator[key];
- arr.push({key:key, value:value});
- }
- return arr;
- }
下面是HTML文件中需要添加的内容(/html-template/index.template.html):
Download: index.template.html
- <head>
- ...
- <script language="JavaScript" src="externalInterface.js"></script>
- </head>
下面是执行实例(可以右键察看源代码):
