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 相关文章推荐
js给页面加style无效果的解决方法
Jan 20 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
Sep 05 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
React BootStrap用户体验框架快速上手
Mar 06 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
JS 图片压缩原理与实现方法详解
Apr 29 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
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
node.js中watch机制详解
2014/11/17 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
用python实现对比两张图片的不同
2018/02/05 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
高中生职业规划范文
2014/03/09 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
作文评语集锦
2014/12/25 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
酒店温馨提示语
2015/07/14 职场文书
《风娃娃》教学反思
2016/02/18 职场文书