Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Значение по ссылке из скрипта (https://javascript.ru/forum/misc/72149-znachenie-po-ssylke-iz-skripta.html)

Sharapov317 12.01.2018 00:24

Значение по ссылке из скрипта
 
Доброго времени, уважаемые форумчане!
Помогите решить напрягучую задачку

Нужно в скрипте Яндекс Метрики вывести IP посетителя.

Проблемы:
php не поддерживается - сайт на конструкторе
два кода скрипта подряд вывести тоже нельзя - система не позволяет

Как вывести вместо XXX значение IP?

Строка:
var yaParams = {ip: "XXX"};

Значение получаю одним из способов этого сервиса l2.io (это ссылка)

Пробовал так, но туго с java у меня) Не получается ничего:
var yaParams = {ip: "<script type='text/javascript' src='https://l2.io/ip.js'></script>"};

Благодарю за помощь

рони 12.01.2018 01:57

вывести IP посетителя
 
Sharapov317,

<script>
var xhr = new XMLHttpRequest();
xhr.open("GET", 'https://www.l2.io/ip', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState != 4) return;
  var yaParams = {ip: xhr.responseText};
  alert( yaParams.ip );  // здесь вызов вашей Метрики
}
xhr.send(null);
</script>

Sharapov317 12.01.2018 09:10

Благодарю, но 2 скрипта подряд система блокирует с сообщением типа неправильный код счетчика

Нужно получить значение в одном скрипте метрике

рони 12.01.2018 09:36

Sharapov317,
не могу помочь, не знаю как устроена метрика

Sharapov317 12.01.2018 09:48

Вот ее полный код:
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
    var yaParams = {ip: "XXX]"};
	(function (d, w, c) {
        (w[c] = w[c] || []).push(function() {
            try {
                w.yaCounter12345678 = new Ya.Metrika({
                    id:12345678,
                    params:window.yaParams,
                    clickmap:true,
                    trackLinks:true,
                    accurateTrackBounce:true,
                    webvisor:true
                });
            } catch(e) { }
        });

        var n = d.getElementsByTagName("script")[0],
            s = d.createElement("script"),
            f = function () { n.parentNode.insertBefore(s, n); };
        s.type = "text/javascript";
        s.async = true;
        s.src = "https://mc.yandex.ru/metrika/watch.js";

        if (w.opera == "[object Opera]") {
            d.addEventListener("DOMContentLoaded", f, false);
        } else { f(); }
    })(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/12345678" style="position:absolute; left:-9999px;" alt="" /></div></noscript>

<!-- /Yandex.Metrika counter -->

Вместо XXX нужно получить значение ip адреса посетителя
А в params:window.yaParams я его передаю

рони 12.01.2018 10:03

Sharapov317,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 12.01.2018 10:19

Sharapov317,

пробуйте...
<!-- Yandex.Metrika counter -->
<script>
var yaParams;
var xhr = new XMLHttpRequest();
xhr.open("GET", 'https://www.l2.io/ip', true);
xhr.onreadystatechange = function() {
  if (xhr.readyState != 4) return;
  yaParams = {ip: xhr.responseText};

 (function (d, w, c) {
 (w[c] = w[c] || []).push(function() {
 try {
 w.yaCounter12345678 = new Ya.Metrika({
 id:12345678,
 params:yaParams,
 clickmap:true,
 trackLinks:true,
 accurateTrackBounce:true,
 webvisor:true
 });
 } catch(e) { }
 });

 var n = d.getElementsByTagName("script")[0],
 s = d.createElement("script"),
 f = function () { n.parentNode.insertBefore(s, n); };
 s.type = "text/javascript";
 s.async = true;
 s.src = "https://mc.yandex.ru/metrika/watch.js";

 if (w.opera == "[object Opera]") {
 d.addEventListener("DOMContentLoaded", f, false);
 } else { f(); }
 })(document, window, "yandex_metrika_callbacks");
}
xhr.send(null);
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/12345678" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
 <!-- /Yandex.Metrika counter -->

Sharapov317 12.01.2018 11:42

В метрике получаю такое значение:
ip.get ('https://www.l2.io/ip') .text

Походу передается сам текст

рони 12.01.2018 11:57

Sharapov317,
всё что мог выше.

Sharapov317 12.01.2018 11:59

Благодарю Вас, Рони

Возможно поможет еще кто?


Часовой пояс GMT +3, время: 08:59.