×
HeadHunter and Superjob rezume updater on Ruby on Rails (21 авг 2017)

Практикуемся в написании кода под rails.

Вопрос VisitorParser.js

Больше
8 мес. 3 нед. назад - 8 мес. 3 нед. назад #1 от Aleksej
Aleksej создал эту тему: VisitorParser.js
Два скрипта, использованные, соответственно, в демках статей Геолокация по ip. VisitorParser.js и VisitorParser.js on Google maps .

<style type="text/css"> code {color: red;} </style>
<ul id="info"></ul>
<script src="visitor-parser.js"></script>
<script>
var visitor = new visitorParser();
var info = visitor.getInfo();
var html = '';
if(info.geo.ip != ''){
html += '<li><b>Your IP address</b><br><code>' + info.geo.ip + '</code>';
html += (info.geo.city != '' || info.geo.country != '' ? ' tells visitorParser.js that you are from' : '');
html += (info.geo.city != '' ? ' around <code>' + info.geo.city + '</code>,' : '');
html += (info.geo.country != '' ? ' <code>' + info.geo.country + '</code>' : '');
html += (info.geo.provider != '' ? ' using the provider <code>' + info.geo.provider + '</code>' : '');
html += '.</li>';
}
html += '<li><b>Date of last visit</b><br>This seems to be your 2nd visit to the visitorParser.js website. Your last visit was on <code>' + info.ua.date + '</code>. Nice to see you again!</li>';
if(info.ua.referring.url != ''){
html += '<li><b>Referring website</b><br>You have been referred to this website by <code>' + info.ua.referring.host + '</code>.</li>';
}
if(info.ua.processor.name != '' || info.ua.platform.name != ''){
html += '<li><b>Platform or operating system</b><br>';
html += 'On <code>' + (info.ua.platform.name != '' ? info.ua.platform.name : 'n/a') + ' ' + (info.ua.platform.version != undefined ? info.ua.platform.version : '') + '</code> with processor <code>' + (info.ua.processor.name != '' ? info.ua.processor.name : 'n/a') + '</code>.';
html += '</li>';
}
html += '<li><b>Browser, engine and resolution</b><br>You seem to be using <code>' + (info.ua.browser.name != '' ? info.ua.browser.name : 'n/a') + ' ' + (info.ua.browser.version != undefined ? info.ua.browser.version : '') + '</code> and engine <code>' + (info.ua.engine.name != '' ? info.ua.engine.name : 'n/a') + ' ' + (info.ua.engine.version != undefined ? info.ua.engine.version : '') + '</code> with a resolution of <code>' + info.ua.resolution.width + '</code>x<code>' + info.ua.resolution.height + '</code> pixels.</li>';
if(info.ua.mobile.name != ''){
html += '<li><b>Mobile device</b><br>';
html += 'You are using a <code>' + info.ua.mobile.name + ' ' + (info.ua.mobile.version != undefined ? info.ua.mobile.version : '') + '</code>.';
html += '</li>';
}
document.getElementById('info').innerHTML = html;
</script>

<html>
  <head>
    <title>Info by ip</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
      width: 100%;
        height: 500px;
      }
    </style>
<script src="visitor-parser.js"></script>
<script>
var visitor = new visitorParser();
var info = visitor.getInfo();
</script>
  </head>
  <body>
    <div id="map"></div>
    <script>
function initMap() {
  var point = {lat: info.geo.lat, lng: info.geo.lon};
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 3,
    center: point
  });
  var contentString = '<p>' + info.geo.ip + '</p>' + '<p>' + info.geo.provider + '</p>' + '<p>' + info.geo.city + '</p>' +'<p>' +info.geo.country + '</p>';
  var infowindow = new google.maps.InfoWindow({
    content: contentString
  });
  var marker = new google.maps.Marker({
    position: point,
    map: map,
  });
  marker.addListener('click', function() {
    infowindow.open(map, marker);
  });
  infowindow.open(map,marker);
}
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_API_KEY&callback=initMap"
        async defer></script>
  </body>
</html>

P.S. Разумеется, если будете использовать в качестве модуля странички, все html, body и head оптимально исключить. :)
Последнее редактирование: 8 мес. 3 нед. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 мес. 3 нед. назад #2 от grease monkey
grease monkey ответил в теме VisitorParser.js
как добиться чтобы на google-картах информационное окно маркера было сразу раскрыто (чтоб не кликать по маркеру) ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 мес. 3 нед. назад #3 от serge
serge ответил в теме VisitorParser.js

grease monkey пишет: как добиться чтобы на google-картах информационное окно маркера было сразу раскрыто (чтоб не кликать по маркеру) ?



В документации Google Maps JavaScript API отсутствует описание этой возможности. Каждый выходит из положения как может. В данном примере вместо дефолтного:

var marker = new google.maps.Marker({
    position: point,
    map: map,
  });
  marker.addListener('click', function() {
    infowindow.open(map, marker);
  });
}


использована такая вставка:

var marker = new google.maps.Marker({
    position: point,
    map: map,
  });
  marker.addListener('click', function() {
    infowindow.open(map, marker);
  });
  infowindow.open(map,marker);
}

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 2 нед. назад #4 от Sutasu
Sutasu ответил в теме VisitorParser.js
Здравствуйте!
Не подскажите, есть ли возможность на основе данного скрипта прописать редирект в .htaccess с основного домена на региональные поддомены (в нашем примере msk.mysite.ru и spb.mysite.ru) по ip входящего пользователя? Geoip у нашего хостинга не подключено, поэтому ищем какие-то пути решения, параллельно изучая html и js :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 2 нед. назад - 6 мес. 2 нед. назад #5 от serge
serge ответил в теме VisitorParser.js
Здравствуйте, Sutasu. Да можно, конечно... все можно при желании. Только вряд ли нужно, это ведь js, и выполняется он на компе пользователя, а не на сервере. Поэтому не нужно городить огород, воспользуйтесь, скажем, MaxMind или Sypex Geo (лучше MaxMind, второй месяц нет обновлений базы для Sypex Geo, и в этом смысле американский сервис представляется более надежным). Или любая другая база геоданных, коим несть числа. Одним словом, используйте для вашей цели API, написанное на php, а не джаваскрипты. В разделе IP Geolocation гляньте примеры кода.

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 6 мес. 2 нед. назад от serge.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 2 нед. назад #6 от Aleksej
Aleksej ответил в теме VisitorParser.js

serge пишет: Только вряд ли нужно, это ведь js, и выполняется он на компе пользователя, а не на сервере.


Серый, а это не ты ли готовый js показывал для перенаправления трафика? :)
Т.е. он был "готовый", на тот момент, надо пояснить... с тех пор MaxMind в бесплатной версии более не предоставляет халявный js в Сети.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 мес. 2 нед. назад #7 от serge
serge ответил в теме VisitorParser.js
Я, это был я... только давно это было, да и "прописать редирект в .htaccess" с помощью подобного скрипта невозможно.

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.