如何利用JavaScript获取用户IP属地
这篇文章主要介绍了如何利用JavaScript获取用户IP属地的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何利用JavaScript获取用户IP属地文章都会有所收获,下面我们一起来看看吧。
尝试一:navigator.geolocation
尝试了使用 navigator.geolocation,但未能成功拿到信息。
getGeolocation(){ if ('geolocation' in navigator) { console.log('地理位置服务可用') navigator.geolocation.getCurrentPosition(function (position) { console.dir('回调成功') console.dir(position) // 没有输出 console.dir(position.coords.latitude, position.coords.longitude) }, function (error) { console.error(error) }) } else { console.error('地理位置服务可用') }}
尝试二:sohu 的接口
尝试使用http://pv.sohu.com/cityjson?ie=utf-8获取用户位置信息, 成功获取到信息,信息样本如下:
{"cip": "14.11.11.11", "cid": "440000", "cname": "广东省"}
// 需要做跨域处理getIpAndAddressSohu(){ // config 是配置对象,可按需设置,例如 responseType,headers 中设置 token 等 const config = { headers: { Accept: 'application/json', 'Content-Type': 'application/json;charset=UTF-8', }, } axios.get('/apiSohu/cityjson?ie=utf-8', config).then(res => { console.log(res.data) // var returnCitySN = {"cip": "14.23.44.50", "cid": "440000", "cname": "广东省"}; const info = res.data.substring(19, res.data.length - 1) console.log(info) // {"cip": "14.23.44.50", "cid": "440000", "cname": "广东省"} this.ip = JSON.parse(info).cip this.address = JSON.parse(info).cname })}
调试的时候,做了跨域处理。
proxy: { '/apiSohu': { target: 'http://pv.sohu.com/', // localhost=>target changeOrigin: true, pathRewrite: { '/apiSohu': '/' } },}
下面是一张获取到位置信息的效果图:
尝试三:百度地图的接口
需要先引入百度地图依赖,有一个参数 ak 需要注意,这需要像管理方申请。例如下方这样
<script class="lazy" data-src="https://api.map.baidu.com/api?v=2.0&ak=3ufnnh7aD5CST"></script>
getLocation() { const $this = this; var geolocation = new BMap.Geolocation();//返回用户当前的位置 geolocation.getCurrentPosition(function (r) { if (this.getStatus() == BMAP_STATUS_SUCCESS) { $this.city = r.address.city; console.log(r.address) // {city: '广州市', city_code: 0, district: '', province: '广东省', street: '', …} } });}
function getLocationBaiduIp(){ function myFun(result){ const cityName = result.name; console.log(result) // {center: O, level: 12, name: '广州市', code: 257} } var myCity = new BMap.LocalCity(); myCity.get(myFun);}
成功用户的省市位置,以及经纬度坐标,但会先弹窗征求用户意见。
写在后面
尝试结果不太理想,sohu 的接口内部是咋实现的,这似乎没有弹起像下面那样的征询用户意见的提示。
而在 navigator.geolocation 和 BMap.Geolocation() 中是弹起了的。
用别人的接口总归是没多大意思,也不知道不用征求用户意见是咋实现的。
经实测 sohu 的接口和 new BMap.Geolocation() 都可以拿到用户的位置信息(省市、经纬度等)。
关于“如何利用JavaScript获取用户IP属地”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何利用JavaScript获取用户IP属地”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341