红包
◆ [2024-12-21 星期六 22:11] ◆
您来自:18.118.28.135,欢迎您访问風雲工作室。
◆
收藏本站
◆ | ◆
设为首页
◆
联系站长(腾讯QQ)
5029111 [風雲]
〓
站长当前离线
〓
首 页
论坛交流
游戏频道
无忧脚本
旧版论坛
云服务器
聊 天 室
自助链接
来访记录
访客留言
搜索提供
位置:
風雲工作室
-
论坛交流
-
技术专栏
-
脚本中心
- 一个前端解析 IP 地址的脚本
返回
主题:一个前端解析 IP 地址的脚本
風雲
★☆☆☆☆☆☆☆☆☆
积分:58
发帖:62
登录:2024/3/26
注册:2006/9/17
(1楼)
一个前端解析 IP 地址的脚本
<body></body><script type="text/javascript"> // 解析IP地址 var ipAddr = new function() { this.parse = function(ip, func) { if(ip in cache) return func(cache[ip]); if(cc[ip]) return cc[ip].push(func); // 此IP已经触发采集了 cc[ip] = [ func ]; var scr = document.createElement("script"); scr.src = "http://ip-api.com/json/" + ip + "?lang=zh-CN&callback=parseIp"; document.body.appendChild(scr) }; this.parseBack = function(res) { var ip = res.query; if(!res.city) res.addr = res.message; else res.addr = res.regionName + res.city; if(res.country != "中国") res.addr = res.country + res.addr; cache[ip] = res; sessionStorage.setItem("ipdb", JSON.stringify(cache)); cc[ip].forEach(function(x) { x(res); }); }; var me = this, cc = new Object; // 请求缓存 var cache = JSON.parse(sessionStorage.getItem("ipdb") || "{}"); }; // 解析 IP 的回调 function parseIp(res) { ipAddr.parseBack(res); } ipAddr.parse("45.63.1.147", function(res) { console.log(res); alert(JSON.stringify(res)); }); </script>
[您可以先修改代码再运行]
批量处理时为了防止重复请求对接口服务器的压力,做了合并请求和临时缓存(sessionStorage)结果的功能
时间:
2021年9月29日 19:41:33
IP:
已记录
引用
回复
pojin
★☆☆☆☆☆☆☆☆☆
积分:2
发帖:2
登录:2021/10/1
注册:2021/8/4
(2楼)
加载速度快
版主牛掰!
时间:
2021年10月1日 21:39:19
IP:
已记录
引用
回复
© Copyright 2006-2024,
風雲工作室
All rights reserved.
【
湘ICP备05009306号
】
QQ登录
操作 1 个库,连接 3 次,执行 9 次,耗时 125 毫秒。