最近遇到一個需求,醫院要求呼叫中心賬號必須對應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">
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && 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
/******************************************以上為瀏覽器信息,以下為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>