js/vue 获取本地ipv4【兼容IE】
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
最近因某些业务要求,需要获取客户端的本地ip。
获取的格式可以为:
192.168.0.xxx
或者
65f46603-1f39-4ca5-957f-65e231804f91.local
翻遍网络,但是全是chrome或者火狐之类的浏览器,都没有同时可以兼容ie的获取方法。
经过自己整理实现了可兼容IE的获取本地ip的方法:
function getLocalIp(cb){
if(window.navigator.userAgent.indexOf("MSIE") == -1
&& window.navigator.userAgent.indexOf("Edge") == -1
&& window.navigator.userAgent.indexOf("Trident") == -1){
let conn = new RTCPeerConnection({
iceServers: []
})
let noop = function(){}
conn.onicecandidate = function(ice){
if (ice.candidate){
//使用正则获取ip
let arr = ice.candidate.candidate.split(' ');
let ip_addr = null;
for(let i in arr){
if(arr[i].indexOf('.local') != -1){
ip_addr = arr[i];
}
}
cb(ip_addr);
conn.onicecandidate = noop
}
}
conn.createDataChannel('dataChannel')
conn.createOffer(conn.setLocalDescription.bind(conn),noop)
}else{
try{
let locator = new ActiveXObject ("WbemScripting.SWbemLocator");
let service = locator.ConnectServer("."); //连接本机服务器
let properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=TRUE");
//查询使用SQL标准
let e = new Enumerator (properties);
for (;!e.atEnd();e.moveNext ())
{
let p = e.item ();
let desc ="Caption:" + p.Caption + " "; //网卡描述,也可以使用Description
let ip ="IP:" + p.IPAddress(0) + " "; //IP地址为数组类型,子网俺码及默认网关亦同
let mac ="MAC:" + p.MACAddress + " "; //网卡物理地址
let ipSplit = ip.split(':');
ip = ipSplit[1]?ipSplit[1]:ipSplit[0];
cb(ip);
}
}catch(e){
//IE获取失败可提示用户,设置相关信任
}
}
}
调用方法
getLocalIp((ip) => {
//即可看到本地ip了
console.log(ip);
})
不过IE需要添加自己的网站为“受信任的站点”,并且将安全级别设为低
IE设置教程
1、Internet 选项
Internet 选项
2、添加受信任站点
添加受信任站点
添加受信任站点
3、记得把安全级别设为低,重启浏览器即可。
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)