Flex通过JS获取客户端IP和计算机名
之前写过两个帖子是获取IP地址。但是最近发现了一个更好一些的获取客户端Ip和计算机名的方法。果断与大家分享。 ? ? ? ? ? ? ? ? ? 首先说明一下,用JS方式获取不是调用webservices和httpservices。 ? ? ? ? ? ? ? ? ? 在我们每一个FLex web工程中,都有那么一个文件夹bin-debug,里面有个index.html文件,我的个人理解是这样的,首先网页运行的时候,mxml的文件会被编译为swf,那么swf如何在浏览器中展现,就是通过这个html文件,相当于在html文件中嵌入了一个swf的object组件。 ? ? ? ? ? ? ? ? ? 所以,在这个html中写入js的代码,来获取ip地址我个人觉得是可行的。因此出现以下代码。 在index.html中增加script标签,实际代码如下: <script type="text/javascript"> 这样获取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 会立即接收它作为该调用的返回值。 此功能替代 在以下浏览器和操作系统的组合中可以使用 ExternalInterface 类:
适用于 Linux 的 Flash Player 9.0.31.0 及更高版本在以下浏览器中支持 ExternalInterface 类:
ExternalInterface 类要求用户的 Web 浏览器支持 ActiveX? 或由某些浏览器公开的 NPRuntime API 以实现插件脚本处理。即使上面未列出浏览器和操作系统组合,如果它们支持 NPRuntime API,则它们也应该支持 ExternalInterface 类。请访问 http://www.mozilla.org/projects/plugins/npruntime.html。 注意:在将 SWF 文件嵌入到 HTML 页中时,请确保设置 . - + * / 注意:Flash Player 9.0.115.0 版和更高版本允许 在浏览器中运行的 Flash Player 10 和更高版本中,以编程方式使用此类打开弹出窗口可能不会成功。不同的浏览器(和浏览器配置)可能会随时阻止弹出窗口;不能保证可以显示任何弹出窗口。不过,为了尽可能成功,请仅在作为用户操作的直接结果执行的代码中使用此类打开弹出窗口(例如,在鼠标单击或按键事件的事件处理函数中)。 利用 ActionScript,可以在 HTML 页上执行以下操作:
通过在 HTML 页上使用 JavaScript,可以:
Flash Player 当前不支持嵌入到 HTML 表单中的 SWF 文件。 注意:在 Adobe AIR 中,ExternalInterface 类可用于在 HTMLLoader 控件中加载的 HTML 页的 JavaScript 与嵌入在该 HTML 页的 SWF 内容中的 ActionScript 之间实现通信。 在我们的mxml文件中使用这个类。进行调用js中的获取ip和pcname的函数: pcName = ExternalInterface.call("getClientPcName");? 您可以尝试Alert,看一下对不对。这样还有一个问题,加入您的机器作为服务器,那么在服务器上获取到的ip会是:127.0.0.1,处理它我相信你会有办法的。 结束。祝好运。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |