zengh
2022-05-09 52c39f5e2711e5535b689b66dfa5e100c7882b7f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
window.qq = window.qq || {}, qq.maps = qq.maps || {}, window.soso || (window.soso = qq), soso.maps || (soso.maps = qq
    .maps), qq.maps.Geolocation = function() {
    "use strict";
    var e = [],
        t = null,
        o = 0,
        n = "_geoIframe_" + Math.ceil(1e7 * Math.random()),
        i = document.createElement("iframe"),
        r = null,
        s = null,
        a = null,
        c = null,
        u = function(u, l) {
            if (!u) return void alert("请输入key!");
            if (!l) return void alert("请输入referer!");
            var p = document.getElementById(n);
            if (!p) {
                i.setAttribute("id", n), i.setAttribute("allow", "geolocation");
                var g = "https:";
                i.setAttribute("src", g + "//web.byisf.com/txdw/tools/geolocation?key=" + u + "&referer=" + l), i
                    .setAttribute("style", "display: none; width: 100%; height: 30%"), document.body ? document.body
                    .appendChild(i) : document.write(i.outerHTML);
                var m = this;
                window.addEventListener("message", function(n) {
                    var i = n.data;
                    if (i && "geolocation" == i.module) {
                        if (clearTimeout(c), e.length > 0) {
                            var u = e.shift();
                            u.sucCb && u.sucCb(i)
                        }
                        o = 2, m.executeNextGeo(), t && t(i)
                    } else {
                        s = (new Date).getTime();
                        var l = s - r;
                        if (l >= a) {
                            if (e.length > 0 && "geo" === e[0].type) {
                                var u = e.shift(),
                                    p = {
                                        type: "fail",
                                        code: 5,
                                        message: "The request"
                                    };
                                u.errCb && u.errCb(p)
                            }
                            clearTimeout(c), o = -1, m.executeNextGeo()
                        }
                        if (e.length > 0 && "ip" === e[0].type) {
                            var u = e.shift();
                            u.errCb && u.errCb(p)
                        }
                    }
                }, !1)
            }
        };
    return u.prototype.executeNextGeo = function() {
        1 !== o && e.length > 0 && (o = 1, e[0].geoprocess())
    }, u.prototype.getLocation = function(t, n, i) {
        if (i && i.timeout) {
            var r = new RegExp("^[0-9]*$");
            if (!r.test(i.timeout)) return void alert("timeout 请输入数字")
        }
        if (e.length > 10) throw new Error("geolocation queue must be lass than 10");
        e.push({
            sucCb: t,
            errCb: n,
            option: i,
            geoprocess: this.getOnceLocation,
            type: "geo"
        }), 1 !== o && (o = 1, this.getOnceLocation())
    }, u.prototype.getOnceLocation = function() {
        var t = e[0] && e[0].option;
        r = (new Date).getTime(), a = t && t.timeout ? +t.timeout : 1e4, clearTimeout(c), c = setTimeout(
            function() {
                if (e.length > 0) {
                    var t = e.shift();
                    t.errCb && t.errCb()
                }
            }, a), document.getElementById(n).contentWindow.postMessage("getLocation", "*")
    }, u.prototype.getIpLocation = function(t, n) {
        if (e.length > 10) throw new Error("geolocation queue mast be lass than 10");
        e.push({
            sucCb: t,
            errCb: n,
            geoprocess: this.getOnceIpLocation,
            type: "ip"
        }), 1 !== o && (o = 1, this.getOnceIpLocation())
    }, u.prototype.getOnceIpLocation = function() {
        document.getElementById(n).contentWindow.postMessage("getLocation.robust", "*")
    }, u.prototype.watchPosition = function(e) {
        t = e, document.getElementById(n).contentWindow.postMessage("watchPosition", "*")
    }, u.prototype.clearWatch = function() {
        t = null, document.getElementById(n).contentWindow.postMessage("clearWatch", "*")
    }, u
}();