Код счетчика Метрики - в переменную. Возможно ли?

159
20 декабря 2021, 23:50

Я хочу отложить загрузку счетчика Метрики до момента, когда пользователь начнет скроллить страницу.

Я хотела бы использовать что-то такое:

window.addEventListener('scroll', function () {
    if (scl === false) {
        scl = true;
        setTimeout(function() {
            $("#ym").innerHTML = 'тут код счетчика ';
        }, 1000);
    }
}); 

Такой вариант с innerНTML, конечно, не позволит мне записать в блок #ym код счетчика метрики.

Есть ли способ это сделать? Может быть, импортом из другого файла? Или еще как-то?

Мне пока не осилить такую задачу самой. Заранее спасибо за помощь!

Код счетчика такой:

<!-- Yandex.Metrika informer --> <a href="https://metrika.yandex.ru/stat/?id=111111111&amp;
   from=informer" target="_blank" rel="nofollow">
<img src="https://informer.yandex.ru/informer/111111111/3_0_FFFFFFFF_EFEFEFFF_0_pageviews" 
style="width:88px; height:31px; border:0;" alt="Яндекс.Метрика" title="Яндекс.Метрика: данные за сегодня 
(просмотры, визиты и уникальные посетители)" class="ym-advanced-informer" data-cid="111111111" data-lang="ru" /></a> 
<!-- /Yandex.Metrika informer --> 
<!-- Yandex.Metrika counter --> <script type="text/javascript" > 
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; 
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) 
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); 
ym(111111111, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); 
</script> 
<noscript><div><img src="https://mc.yandex.ru/watch/111111111" style="position:absolute; left:-9999px;" alt="" /></div>
</noscript> <!-- /Yandex.Metrika counter --> 
Answer 1

Вам нужно разбить код счетчика на две части, как здесь:

setTimeout(function() { 
  var html = ` 
  <p>html replacement</p> 
  `; 
  var code = ` 
    console.log("test"); 
  `; 
  var script = document.createElement("script"); 
  script.innerText = code; 
  document.getElementById("test").innerHTML = html; 
  document.getElementById("test").appendChild(script); 
}, 1000);
p { 
  color: red; 
}
<div id="test">test here</div>

READ ALSO
Как можно передать значения из Javabeans в JS

Как можно передать значения из Javabeans в JS

Есть код верстки страницы на JSF и в том числе форма,данные заполнения которой отправляются в JavaBeansКак можно потом их получить в JS?

90
Всплывающее окно на jQuery и Bootstrap

Всплывающее окно на jQuery и Bootstrap

Верстаю пробный сайт на bootstrap, хочется поместить туда всплывающее окно при возникновении ошибокНашел много советов по подключению библиотек...

159
Как сделать валидацию полей input

Как сделать валидацию полей input

Создаю таблицу при помощи jquery в ней есть 3 input, не могу понять как седлать валидацию для input которые идут в один ряд trНужно чтоб когда 3 инпута...

162