Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
JavaScript и вызов события Yandex.Metrika - помогите плиз.
Новая тема
Ответить
цитата
08/10/14 в 22:18
WeRock
Уже несколько часов мучаюсь, не могу сообразить как сделать, а ведь работало у меня это год назад! Итак.
Имеем сайт. В конце стоит код счетчика яндекс метрики, все ок, заходы считает.
На сайте по клику по ссылку отрабатывается событию onClick="start()" вызывая функцию JS типа:
Цитата:
function start() {
alert "Сюда кликнули!";
}
Мне нужно, чтобы событие зачитывалось как достигнутая цель.
Пытаюсь сделать следующее:
Цитата:
function start() {
yaCounterXXXXXX.reachGoal('click_here');
alert "Сюда кликнули!";
}
где ХХХХХХ - мой ИД в метрике.
На что получаю ошибку типа yaCounterXXXXXX не определено. Что в общем-то логично. В функции нигде не задана переменная(объект) yaCounterXXXXXX. Но как ее задать?
Попробовал код метрики (счетчика) ставить вверх страницы (выше вызова этой функции) - все то же самое.
Пробовал писать внутри функции типа
var yaCounterXXXXXX
тоже не получается. :-(
Подскажите плиз как сделать.
цитата
08/10/14 в 22:46
ibiz
а что в консоле пишет?
цитата
08/10/14 в 23:06
WeRock
yaCounterXXXXXX is no defined
цитата
08/10/14 в 23:32
ibiz
yaCounterXXXXXX - циферки правильные указаны?
цитата
08/10/14 в 23:39
WeRock
yaCounterXXXXXX - да, конечно, я их копипастил.
Просто внутри функции этот самый yaCounterXXXXXX не определен. Что логично. Вопрос, как его определить? Самое интересное то, что такая конструкция у меня работала год назад. Причем особых проблем я не помню. Но как там было реализовано - хз.
Если просто указать в ссылке:
OnClick = "yaCounterXXXXXX.reachGoal('click_here');" - то тут все работает. Но мне нужно чтобы по клику запускалась функция, а из нее уже дергался .reachGoal
ЗЫ: В ПХП я бы написал:
global yaCounterXXXXXX;
и все бы заработало. А вот в этом яваскрипте всегда все как-то не так реализуется :-).
цитата
08/10/14 в 23:48
ibiz
yaCounterXXXXXX вроде глобальная
у себя проверил, все работает console.log(yaCounterXXXXXX.reachGoal('click_here')); выдает true
цитата
08/10/14 в 23:50
ibiz
ну попробуй написать window.yaCounterXXXXXX
цитата
09/10/14 в 00:11
Mika
yaCounterXXXXXX где определяется? в какой-то функции? var перед yaCounterXXXXXX стоит? если да, то убирай.
цитата
09/10/14 в 09:28
ibiz
надо смотреть весь код страницы, yaCounterXXXXXX глобальная переменная, возможно что-то не подгружается или сбрасывается по ходу загрузки
Код:
<script type="text/javascript">(function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounterXXXXXX = new Ya.Metrika({id:XXXXXX, clickmap:true, trackLinks: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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f); } else { f(); } })(document, window, "yandex_metrika_callbacks");</script><noscript><div><img src="//mc.yandex.ru/watch/XXXXXX" style="position:absolute;left:-9999px;" alt="" /></div></noscript>
цитата
09/10/14 в 11:06
WeRock
Ну вот, сделал тестовую страницу.
В метрике задана цель-событие "click_play".
Код страницы:
<html>
<body>
<script type="text/javascript">
function start() {
alert('Link was clicked!');
yaCounterXXXXXXXX.reachGoal('click_play');
}
</script>
<h1>Hello World!</h1>
<A href="#" OnClick="start();">Click here!</A>
<!-- Yandex.Metrika informer -->
<a href="https://metrika.yandex.ru/stat/?id=XXXXXXXX&from=informer"
target="_blank" rel="nofollow"><img src="//bs.yandex.ru/informer/XXXXXXXX/1_0_FFFFFFFF_EFEFEFFF_0_pageviews"
style="width:80px; height:15px; border:0;" alt="Яндекс.Метрика" title="Яндекс.Метрика: данные за сегодня (просмотры)" /></a>
<!-- /Yandex.Metrika informer -->
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
var yaParams = {/*Здесь параметры визита*/};
</script>
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounterXXXXXXXX = new Ya.Metrika({id:XXXXXXXX,
webvisor:true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,params:window.yaParams||{ }});
} 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 = (d.location.protocol == "https:" ? "https:" : "http:") + "//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="//mc.yandex.ru/watch/XXXXXXXX" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</body>
</html>
В результате, если смотреть через FireBug, при клике на сылку вылетает ошибка:
ReferenceError: yaCounterXXXXXXXX is not defined
yaCounterXXXXXXXX.reachGoal('click_play');
Соответственно, цели не передаются.
При этом, заходы на страницу фиксируются, т.е. счетчик нормально собирает статистику.
Что я делаю не так?
цитата
09/10/14 в 11:26
WeRock
Так, становится еще интереснее..
Я решил отказаться от функции.
Запихнул код счетчика вверх страницы, полсе тега
<body>
А ниже добавил еще одну ссылку:
<A href="#" OnClick="yaCounterXXXXXXXX.reachGoal('click_play2'); ">Click here 2!</A>
Предварительно задав в метрике событие
click_play2
В результате та же самая ошибка:
ReferenceError: yaCounterXXXXXXXX is not defined
и как следствие цели не фиксируются.
цитата
09/10/14 в 11:31
Alexandur
А ты с иксами также запускаешь?
А то я попробовал на циферки заменить, и всё заработало.
цитата
09/10/14 в 11:44
WeRock
Да нет, конечно. У меня цифры везде.
Бред какой-то... Сейчас посмотрел другой свой сайт, там все нормально, запуск идет из функции или из ссылки. Все работает. Тут нихрена не работает... Бредятина какая-то.
цитата
09/10/14 в 12:08
ibiz
можно считать вопрос закрытым
цитата
09/10/14 в 12:28
WeRock
ibiz писал:
можно считать вопрос закрытым
Да вот пока так и не заработало.
Поставил другой браузер, на другой комп, туда же поставл файрбаг. В консоле вроде все ок, но цели в метрике по прежнему на нуле.
Единсвенное что во вкладке Response я получаю вот такой ответ:
Код:
GIF89a�����������!�����,�������D�;
т.е. такое впечатление, что с кодировкой что-то не так. Может в этом дело?
цитата
14/10/14 в 11:42
5hark
а если так?
Код:
function start(yaCounterXXXXX) {
yaCounterXXXXXX.reachGoal('click_here');
alert "Сюда кликнули!";
}
<a href='' onclick="start(yaCounterXXXXXX);">link</a>
Новая тема
Ответить
Эта страница в полной версии