(function (window) { 'use strict'; (function () { function getScript(source, callback) { var script = document.createElement('script'); var prior = document.getElementsByTagName('script')[0]; script.async = 1; script.onload = script.onreadystatechange = function( _, isAbort ) { if(isAbort || !script.readyState || /loaded|complete/.test(script.readyState) ) { script.onload = script.onreadystatechange = null; script = undefined; if(!isAbort && callback) setTimeout(callback, 0); } }; script.src = source; prior.parentNode.insertBefore(script, prior); } // Instead of remote: https://js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js, point to local file. getScript('/assets/js/geoip2.js', function(){ window.geoip2.city(function(data){ // GeoIP is done. You can do something with the data object, like filling fields etc: if (typeof window.console.log !== 'undefined'){ // console.log('GeoIP data retrieved.', data); // console.log('IP: ' + data.traits.ip_address || ''); // console.log('Zip: ' + data.postal.code || ''); window.mmResults(data.traits.ip_address, data.postal.code, data.city.names.en, data.subdivisions[0].iso_code); } }, function(data){ // Something went wrong. if (typeof window.console.warn !== 'undefined'){ // console.warn('Failed to get GeoIP.', data); } }); }); }()); }(typeof window !== 'undefined' ? window : this));