原来在XP上能通过获取到IP,但是到了WIN7上就不行了,原来的获取方法:
<script language="JavaScript"> 
function GetLocalIPAddr(){ 
var oSetting = null; 
var ip = null; 
try{ 
oSetting = new ActiveXObject("rcbdyctl.Setting"); 
ip = oSetting.GetIPAddress; 
alert(ip); 
if (ip.length == 0){ 
return "没有连接到Internet"; 

oSetting = null; 
}catch(e){ 
return ip; 

return ip; 

alert(GetLocalIPAddr()) 
</script> 
在网上找了一下其他获取IP的方法
这个直接通过Js来执行ipconfig命令获取IP,但是安全性能是不是较低啊
http://topic.csdn.net/t/20041010/12/3440117.html这个是通过ActiveX控件来获取的
http://blog.csdn.net/nwf5d/archive/2010/06/29/5702581.aspx<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE>   
<META http-equiv=Content-Type content="text/html; charset=gb2312">   
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>   
// document.forms[0].txtMACAddr.value=unescape(MACAddr);   
   document.forms[0].txtIPAddr.value=unescape(IPAddr);   
   alert(unescape(IPAddr));   
// document.forms[0].txtDNSName.value=unescape(sDNSName);   
 //document.formbar.submit();   
  </SCRIPT>   
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>   
   if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)   
   {   
    //if(objObject.MACAddress != null && objObject.MACAddress != "undefined")   
    //MACAddr = objObject.MACAddress;   
    if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")   
    IPAddr = objObject.IPAddress(0);   
    //if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")   
    //sDNSName = objObject.DNSHostName;   
    }   
  </SCRIPT>   
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>   
<BODY>   
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>   
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>   
<SCRIPT language=JScript>   
   var service = locator.ConnectServer();   
   var MACAddr ;   
   var IPAddr ;   
   var DomainAddr;   
   var sDNSName;   
   service.Security_.ImpersonationLevel=3;   
   service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');   
   </SCRIPT>   
<FORM id=formfoo name=formbar action=NICPost.asp method=post>   
    <INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr>    
    <INPUT value=192.168.0.2 name=txtIPAddr>   
    <INPUT value=typ name=txtDNSName>    
    </FORM>   
</BODY>   
</HTML> 这个经测试在WIN7上是可用的,但是对JS不熟悉,对这段JS似懂非懂,有朋友指导一下如何将这部分封装成类似GetLocalIPAddr()一样的函数么?另外顺便也帮忙解析一下这段JS,谢谢

解决方案 »

  1.   

    解决方法:使用MWI
    <script language="javascript"> 
    <!--function GetAdapterInfo() {var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); 
    var service = locator.ConnectServer("."); //连接本机服务器
    var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration"); 
    //查询使用SQL标准
    var e = new Enumerator (properties);for (;!e.atEnd();e.moveNext ()) 

    var p = e.item ();
    document.write("Caption:" + p.Caption + " "); //网卡描述,也可以使用Description
    document.write("IP:" + p.IPAddress(0) + " ");//IP地址为数组类型,子网俺码及默认网关亦同
    document.write("Net MASK:" + p.IPSubnet(0) + " ");
    document.write("Default gateway:" + p.DefaultIPGateway(0) + " ");
    document.write("MAC:" + p.MACAddress + " "); //网卡物理地址
    document.write("<hr>"); 
    }}GetAdapterInfo();//--> 
    </script> 如果想获取一个网卡下面的所有IP,那可以:
    var ipArray = p.IPAddress.toArray();
    var i=0;
    for (i=0; i<ipArray.length; i++)
    {
        alert(ipArray[i]);
    }
      

  2.   

    自己无法结贴啊,BUG啊:
    满意结贴提示分数分配不对;想无满意结贴提示要24小时后- -!!!
      

  3.   

    不要死扣js,发一个xmlhttp请求到后台,解析ip地址就非常容易了,而且速度也不会很慢。
      

  4.   

    后台获取不了本地的所有IP,只能获取http建立链接的ip
      

  5.   

    在win7上怎么不能直接运行jscript呢?