Skip to content

Commit 20d32a5

Browse files
committed
Compatible with Vanilla JS. Dropped the JQuery AJAX dependency.
1 parent 867f214 commit 20d32a5

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

ipgeolocation.js

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ var _ipgeolocation = function() {
88
var tz = "";
99
var latitude = "";
1010
var longitude = "";
11+
var geolocationEndpoint = "ipgeo";
12+
var timezoneEndpoint = "timezone";
13+
var geolocationResponseName = "_ipgeolocation_geolocation";
14+
var timezoneResponseName = "_ipgeolocation_timezone";
1115

1216
function request(subUrl, callback, apiKey = "") {
1317
if (useSessionStorage) {
14-
if (subUrl == "ipgeo" && sessionStorage.getItem("_ipGeolocation") && callback) {
15-
callback(JSON.parse(sessionStorage.getItem("_ipGeolocation")));
18+
if (subUrl == geolocationEndpoint && sessionStorage.getItem(geolocationResponseName) && callback) {
19+
callback(JSON.parse(sessionStorage.getItem(geolocationResponseName)));
1620
return;
17-
} else if (subUrl == "timezone" && sessionStorage.getItem("_ipTimeZone") && callback) {
18-
callback(JSON.parse(sessionStorage.getItem("_ipTimeZone")));
21+
} else if (subUrl == timezoneEndpoint && sessionStorage.getItem(timezoneResponseName) && callback) {
22+
callback(JSON.parse(sessionStorage.getItem(timezoneResponseName)));
1923
return;
2024
}
2125
}
@@ -55,32 +59,36 @@ var _ipgeolocation = function() {
5559
urlParameters = addUrlParameter(urlParameters, "lat", latitude);
5660
urlParameters = addUrlParameter(urlParameters, "long", longitude);
5761
}
58-
59-
$.ajax ({
60-
async: asyncCall,
61-
method: "GET",
62-
url: "https://api.ipgeolocation.io/".concat(subUrl, urlParameters, ""),
63-
contentType: "application/json",
64-
dataType: "json",
65-
success: function (result, status, xhr) {
66-
if (useSessionStorage) {
67-
if (subUrl == "ipgeo") {
68-
sessionStorage.setItem("_ipGeolocation", JSON.stringify(result));
69-
} else if (subUrl == "timezone") {
70-
sessionStorage.setItem("_ipTimeZone", JSON.stringify(result));
62+
63+
var httpRequest;
64+
65+
if (window.XMLHttpRequest) {
66+
httpRequest = new XMLHttpRequest();
67+
} else if (window.ActiveXObject) {
68+
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
69+
}
70+
71+
httpRequest.onreadystatechange = function() {
72+
if (this.readyState == 4) {
73+
if (useSessionStorage && this.status == 200) {
74+
key = geolocationResponseName;
75+
76+
if (subUrl == timezoneEndpoint) {
77+
key = timezoneResponseName;
7178
}
79+
80+
sessionStorage.setItem(key, this.responseText);
7281
}
7382

7483
if (callback) {
75-
callback(result);
76-
}
77-
},
78-
error: function (xhr, status, error) {
79-
if (callback) {
80-
callback(JSON.parse(xhr.responseText));
84+
callback(JSON.parse(this.responseText));
8185
}
8286
}
83-
});
87+
};
88+
89+
httpRequest.open("GET", "https://api.ipgeolocation.io/".concat(subUrl, urlParameters, ""), asyncCall);
90+
httpRequest.setRequestHeader("Accept", "application/json");
91+
httpRequest.send();
8492
}
8593

8694
function addUrlParameter(parameters, parameterName, parameterValue) {
@@ -120,10 +128,10 @@ var _ipgeolocation = function() {
120128
longitudeParameter = longitude;
121129
},
122130
getGeolocation: function(callback, apiKey = "") {
123-
request("ipgeo", callback, apiKey);
131+
request(geolocationEndpoint, callback, apiKey);
124132
},
125133
getTimezone: function(callback, apikey = "") {
126-
request("timezone", callback, apikey);
134+
request(timezoneEndpoint, callback, apikey);
127135
}
128136
}
129137
}();

0 commit comments

Comments
 (0)