что я пропускаю с этим перенаправлением геолокации сценария - PullRequest
0 голосов
/ 03 июля 2018

какой был один из моих скриптов это не работает в соответствии с целевым кодом страны

//OFFER WAP
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i) ||
  navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) ||
  navigator.userAgent.match(/Windows Phone/i) || navigator.userAgent.match(/iPad/i)) {
  var target = []; // 
  target.US = "https://www.google.com"; // 
  target.AU = "https://stackoverflow.com/"; // 
  target.All = "https://www.facebook.com/"; // 
  setTimeout("document.location = urls;", 1500);
}

function geoip(g) {
  window.top.location.href = target[g.country_code] || target.All
}
(function(g, e, o, i, p) {
  i = g.createElement(e), p = g.getElementsByTagName(e)[0];
  i.async = 0;
  i.src = o;
  p.parentNode.insertBefore(i, p)
})(document, 'script', 'http://geoip.nekudo.com/api/?callback=geoip');
<meta charset="utf-8">
<title>Please Wait...</title>
<meta http-equiv="refresh" content="1500">
<script src='http://www.geoplugin.net/javascript.gp' type='text/javascript'></script>

1 Ответ

0 голосов
/ 03 июля 2018

Проблема в том, что у вас есть инициализация target внутри блока if для различных пользовательских агентов. Если пользовательский агент не соответствует ни одному из них, target остается неопределенным, а затем target[g.country_code] выдает ошибку.

Вы должны инициализировать переменную пустым объектом до if, а также поместить туда значение по умолчанию target.All. Если вам нужны специфичные для местоположения цели в зависимости от пользовательского агента, вы можете добавить их в if.

Другая проблема заключается в том, что в ответе отсутствует свойство country_code. JSON выглядит так:

geoip({
  "city": "Woburn",
  "country": {
    "name": "United States",
    "code": "US"
  },
  "location": {
    "accuracy_radius": 5,
    "latitude": 42.4897,
    "longitude": -71.1595,
    "time_zone": "America/New_York"
  },
  "ip": "71.192.114.133"
});

Код страны указан в g.country.code, а не g.country_code.

var target = { All: "https://www.facebook.com/" };

//OFFER WAP
if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i) ||
  navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) ||
  navigator.userAgent.match(/Windows Phone/i) || navigator.userAgent.match(/iPad/i)) {
  target.US = "https://www.google.com"; // 
  target.AU = "https://stackoverflow.com/"; // 
  setTimeout("document.location = urls;", 1500);
}

function geoip(g) {
  window.top.location.href = target[g.country.code] || target.All
}
(function(g, e, o, i, p) {
  i = g.createElement(e), p = g.getElementsByTagName(e)[0];
  i.async = 0;
  i.src = o;
  p.parentNode.insertBefore(i, p)
})(document, 'script', 'http://geoip.nekudo.com/api/?callback=geoip');
<meta charset="utf-8">
<title>Please Wait...</title>
<meta http-equiv="refresh" content="1500">
<script src='http://www.geoplugin.net/javascript.gp' type='text/javascript'></script>
...