最近遇到一个需求,医院要求呼叫中心账号必须对应MAC地址,也就是说该MAC地址必须和呼叫中心账号对应才可使用,这可就难道我了,这需求就要求每次都判断用户登录的电脑MAC地址是否有呼叫中心账号,当然只针对IE浏览器,毕竟其他浏览器是直接就给禁止此功能的。

那么首先问题一:如何才能通过页面访问得到本地MAC地址

问题二:每台电脑上都有多个MAC地址,那么应该选用哪一个MAC地址

MAC地址是每台电脑链接网络的物理地址,是唯一标识,想要从浏览器获取电脑的信息,那么就需要ActiveX,所以其他浏览器是没有办法通过js获取MAC地址的。

方法一:(推荐)需要客户端设置将服务器地址加入受信任站点

<html>  
<head>  
<title>获取客户端MAC地址</title>  
</head>  
<body>  
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" style="display:none;visibility:hidden"></object>  
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo" style="display:none;visibility:hidden"></object>   
<form name="myForm">  
<br/>MAC地址:<input type="text" name="macAddress">  
<br/>IP地址:<input type="text" name="ipAddress">  
<br/>主机名:<input type="text" name="hostName">  
</form>  
</body>  
</html>  
<script language="javascript">  
var sMacAddr="";  
var sIPAddr="";  
var sDNSName="";  
var service = locator.ConnectServer();  
service.Security_.ImpersonationLevel=3;  
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');  
</script>  
<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">  
objObject.IPEnabled == true){  
                           if(objObject.IPEnabled && objObject.IPAddress(0) !=null && objObject.IPAddress(0) != "undefined")  
sIPAddr = objObject.IPAddress(0);  
                           if(objObject.MACAddress != null &&objObject.MACAddress != "undefined")  
sMacAddr = objObject.MACAddress;  
                           if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined")  
sDNSName = objObject.DNSHostName;  
          }  
</script>  
  
<script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">  
myForm.macAddress.value=sMacAddr;  
myForm.ipAddress.value=sIPAddr;  
myForm.hostName.value=sDNSName;  
</script>  
 
方法二:
<!DOCTYPE html>
<html>  
<head>  
   <title>获取电脑硬件信息</title>    
   <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=GBK">
  </head>  
  <body>
   <script id="clientEventHandlersJS" language="javascript" charset="utf-8">
http://www.w3school.com.cn/htmldom/dom_obj_navigator.asp">http://www.w3school.com.cn/htmldom/dom_obj_navigator.asp
/******************************************以上为浏览器信息,以下为pc信息************************************************/ try {  var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer(".");
 //获取网络连接信息
 function ipinfo(){  
  var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE");  
  var e = new Enumerator (properties);
   var info="<table border=1>";  
  info+="<tr bgcolor='#CDEDED' style='font-weight: bold;' >
<td width='450'>网络连接信息:</td></tr>";  
  var i=1;   
for (;!e.atEnd();e.moveNext ()){  
   var p = e.item ();   
  info+="<tr style='color: red'><td >MAC地址"+i+":" + p.MACAddress + "</td></tr>";     info+="<tr style='color: red'><td >IP地址"+i+":" + p.IPAddress(0) + "</td></tr>";     i++;    }
   info+="</table>";    return info;   }
function pcInfo() {//所有信息     
var info=ipinfo();    
/* info+=disk();     info+=raminfo();   
  info+=mainBoard();    
info+=ipinfo();    
info+=keyBoardInfo();    
info+=RomInfo();  
   info+=softDisk(); */       document.getElementById('elInfo').innerHTML=info;   
return info;   } } catch (e) {  document.write(e); }
 
/******************************************以上为pc信息************************************************/
</script>
 </head>
 <body >   <!--  <INPUT id="Button1" type="button" value="浏览器所有信息" name="Button1" language=javascript onclick="allinfo()">  -->
<INPUT id="Button1" type="button" value="客户端pc信息" name="Button1" language=javascript onclick="pcInfo()">
<div id="elInfo" >
</div>   </body> </html>

没有克服不了的困难,只有畏惧的心。 生活之所以耀眼,是因为磨难与辉煌会同时出现。所以,别畏惧暂时的困顿,即使无人鼓掌,也要全情投入,优雅坚持。请相信:不管多险峻的高山,总会给勇敢的人留一条攀登的路。只要你肯迈步,路就会在你脚下延伸。