有这样一个场景, 要扫描内网的某个服务, 只能通过前端来实现已知服务器的端口号, 不知道内网的 IP 网段
首先 ajax 是不能用的, 因为网页与目标服务器地址不一致, 跨域了
其次 jsonp 也不好用, 因为现在浏览已经开始限制手动用脚本发 jsonp 获取获服务器信息了
最后只能用 Image 来解决了
Image 有一个 onload 方法, 如果目录服务器文件存储则会触发, 可以用来扫描设备:
- var findArrs = [
- '192.168.0.'
- , '192.168.1.'
- , '10.0.0.'
- ]
- var onloadHandler = function() {console.log(this)
- console.log(arguments)
- var src = this.src
- console.log(src)
- }
- for (var i = 0; i < findArrs.length; i++) {
- for (var j = 0; j < 255; j++) {
- var img = new Image()
- img.onerror = null
- img.onload = onloadHandler
- img.src = 'http://' + findArrs[i] + j + ':8064/img/onceair.png';
- }
- }
缺点: 部分浏览器会限制同时下载图片的数量, 因此扫描可能会很慢
来源: http://www.tuicool.com/articles/RBVFfaN