Flex通过JS获取客户端IP和计算机名的实例代码


Posted in Javascript onNovember 21, 2013

首先说明一下,用JS方式获取不是调用webservices和httpservices。

    在我们每一个FLex web工程中,都有那么一个文件夹bin-debug,里面有个index.html文件,我的个人理解是这样的,首先网页运行的时候,mxml的文件会被编译为swf,那么swf如何在浏览器中展现,就是通过这个html文件,相当于在html文件中嵌入了一个swf的object组件。 3water.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 类。
注意:在将 SWF 文件嵌入到 HTML 页中时,请确保设置 id 属性,并且 object 和 embed 标签的 id 和 name 属性不包含以下字符:

 . - + * / /

注意:Flash Player 9.0.115.0 版和更高版本允许在 id 和 name 属性中使用 .(句点)字符。

在浏览器中运行的 Flash Player 10 和更高版本中,以编程方式使用此类打开弹出窗口可能不会成功。不同的浏览器(和浏览器配置)可能会随时阻止弹出窗口;不能保证可以显示任何弹出窗口。不过,为了尽可能成功,请仅在作为用户操作的直接结果执行的代码中使用此类打开弹出窗口(例如,在鼠标单击或按键事件的事件处理函数中)。

利用 ActionScript,可以在 HTML 页上执行以下操作:

调用任何 JavaScript 函数。
传递任意数量、具有任意名称的参数。
传递各种数据类型(Boolean、Number、String 等等)。
接收来自 JavaScript 函数的返回值。
通过在 HTML 页上使用 JavaScript,可以:

调用 ActionScript 函数。
使用标准的函数调用表示法传递参数。
将值返回给 JavaScript 函数。
Flash Player 当前不支持嵌入到 HTML 表单中的 SWF 文件。

注意:在 Adobe AIR 中,ExternalInterface 类可用于在 HTMLLoader 控件中加载的 HTML 页的 JavaScript 与嵌入在该 HTML 页的 SWF 内容中的 ActionScript 之间实现通信。

在我们的mxml文件中使用这个类。进行调用js中的获取ip和pcname的函数:

pcName = ExternalInterface.call("getClientPcName");

ip =  ExternalInterface.call("getClientIp"); 

您可以尝试Alert,看一下对不对。这样还有一个问题,加入您的机器作为服务器,那么在服务器上获取到的ip会是:127.0.0.1,处理它我相信你会有办法的。

Javascript 相关文章推荐
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
Jan 10 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 Javascript
JS简单的轮播的图片滚动实例
Jun 17 Javascript
js创建对象的方式总结
Jan 10 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
Jul 04 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
webpack打包非模块化js的方法
Oct 24 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
vue实现移动端触屏拖拽功能
Aug 21 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 #Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 #Javascript
js中一个函数获取另一个函数返回值问题探讨
Nov 21 #Javascript
js设置组合快捷键/tabindex功能的方法
Nov 21 #Javascript
jtable列中自定义button示例代码
Nov 21 #Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 #Javascript
JS两种定义方式的区别、内部原理
Nov 21 #Javascript
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
javascript 类型判断代码分析
2010/03/28 Javascript
javascript数组去掉重复
2011/05/12 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
keras之权重初始化方式
2020/05/21 Python
培训心得体会
2013/12/29 职场文书
道德模范先进事迹
2014/02/14 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
欢迎领导检查标语
2014/06/27 职场文书
个人专业技术总结
2015/03/05 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
赤壁观后感(2)
2015/06/15 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript