首先说明一下,用JS方式获取不是调用webservices和httpservices。
在我们每一个FLex web工程中,都有那么一个文件夹bin-debug,里面有个index.html文件,我的个人理解是这样的,首先网页运行的时候,mxml的文件会被编译为swf,那么swf如何在浏览器中展现,就是通过这个html文件,相当于在html文件中嵌入了一个swf的object组件。 www.Vevb.com
所以,在这个html中写入js的代码,来获取ip地址我个人觉得是可行的。因此出现以下代码。
在index.html中增加script标签,实际代码如下:
代码如下:
<script type="text/javascript">
function getClientPcName()
{
//alert("请将您浏览器Internet选项中的“对没有标记为安全的ActiveX控件进行初始化和脚本运行”设置为“启用”!/n/n然后刷新本页登陆!");
///window.onerror = killErrors; +"/"+WshShell.UserName;
var WshShellPcName = new ActiveXObject("WScript.Network");
var ComputerName = WshShellPcName.ComputerName ;
//添加信任站点(http://192.168.1.5)
//alert(ComputerName);
return ComputerName;
}
function getClientIp()
{
var WshShellIp = new ActiveXObject("rcbdyctl.Setting");
var ip = WshShellIp.GetIPAddress;
return ip;
}
</script>
这样获取ip和pcname的相当于后台的代码就写好了。
如何在flex中调用呢,那就用到了Flex的这个类:flash.external.ExternalInterface。
对于ExternalInterface类,adobe是这样解释的:
ExternalInterface 类是外部 API,这是一个在 ActionScript 和 Flash Player 容器之间实现直接通信的应用程序编程接口,例如,包含 JavaScript 的 HTML 页。Adobe 建议使用 ExternalInterface 实现 JavaScript 与 ActionScript 之间的所有通信。
在 Flash Player 中,可以使用 HTML 页中的 JavaScript 来调用 ActionScript 函数。ActionScript 函数可以返回一个值,JavaScript 会立即接收它作为该调用的返回值。
此功能替代 fscommand() 方法。
在以下浏览器和操作系统的组合中可以使用 ExternalInterface 类:
浏览器 操作系统 操作系统
Internet Explorer 5.0 及更高版本 Windows
Netscape 8.0 及更高版本 Windows MacOS
Mozilla 1.7.5 及更高版本 Windows MacOS
Firefox 1.0 及更高版本 Windows MacOS
Safari 1.3 及更高版本 MacOS
适用于 Linux 的 Flash Player 9.0.31.0 及更高版本在以下浏览器中支持 ExternalInterface 类:
浏览器
Mozilla 1.7.x 及更高版本
Firefox 1.5.0.7 及更高版本
SeaMonkey 1.0.5 及更高版本
ExternalInterface 类要求用户的 Web 浏览器支持 ActiveX® 或由某些浏览器公开的 NPRuntime API 以实现插件脚本处理。即使上面未列出浏览器和操作系统组合,如果它们支持 NPRuntime API,则它们也应该支持 ExternalInterface 类。
新闻热点
疑难解答
图片精选