С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 08/10/14 в 22:18 |
Уже несколько часов мучаюсь, не могу сообразить как сделать, а ведь работало у меня это год назад! Итак.
Имеем сайт. В конце стоит код счетчика яндекс метрики, все ок, заходы считает.
На сайте по клику по ссылку отрабатывается событию onClick="start()" вызывая функцию JS типа:
Цитата: | function start() {
alert "Сюда кликнули!";
}
|
Мне нужно, чтобы событие зачитывалось как достигнутая цель.
Пытаюсь сделать следующее:
Цитата: | function start() {
yaCounterXXXXXX.reachGoal('click_here');
alert "Сюда кликнули!";
} |
где ХХХХХХ - мой ИД в метрике.
На что получаю ошибку типа yaCounterXXXXXX не определено. Что в общем-то логично. В функции нигде не задана переменная(объект) yaCounterXXXXXX. Но как ее задать?
Попробовал код метрики (счетчика) ставить вверх страницы (выше вызова этой функции) - все то же самое.
Пробовал писать внутри функции типа
var yaCounterXXXXXX
тоже не получается. :-(
Подскажите плиз как сделать.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 08/10/14 в 22:46 |
а что в консоле пишет?
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 08/10/14 в 23:06 |
yaCounterXXXXXX is no defined
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 08/10/14 в 23:32 |
yaCounterXXXXXX - циферки правильные указаны?
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 08/10/14 в 23:39 |
yaCounterXXXXXX - да, конечно, я их копипастил.
Просто внутри функции этот самый yaCounterXXXXXX не определен. Что логично. Вопрос, как его определить? Самое интересное то, что такая конструкция у меня работала год назад. Причем особых проблем я не помню. Но как там было реализовано - хз.
Если просто указать в ссылке:
OnClick = "yaCounterXXXXXX.reachGoal('click_here');" - то тут все работает. Но мне нужно чтобы по клику запускалась функция, а из нее уже дергался .reachGoal
ЗЫ: В ПХП я бы написал:
global yaCounterXXXXXX;
и все бы заработало. А вот в этом яваскрипте всегда все как-то не так реализуется :-).
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 08/10/14 в 23:48 |
yaCounterXXXXXX вроде глобальная
у себя проверил, все работает console.log(yaCounterXXXXXX.reachGoal('click_here')); выдает true
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 08/10/14 в 23:50 |
ну попробуй написать window.yaCounterXXXXXX
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 09/10/14 в 00:11 |
yaCounterXXXXXX где определяется? в какой-то функции? var перед yaCounterXXXXXX стоит? если да, то убирай.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 09/10/14 в 09:28 |
надо смотреть весь код страницы, 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>
|
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 09/10/14 в 11:06 |
Ну вот, сделал тестовую страницу.
В метрике задана цель-событие "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');
Соответственно, цели не передаются.
При этом, заходы на страницу фиксируются, т.е. счетчик нормально собирает статистику.
Что я делаю не так?
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 09/10/14 в 11:26 |
Так, становится еще интереснее..
Я решил отказаться от функции.
Запихнул код счетчика вверх страницы, полсе тега
<body>
А ниже добавил еще одну ссылку:
<A href="#" OnClick="yaCounterXXXXXXXX.reachGoal('click_play2'); ">Click here 2!</A>
Предварительно задав в метрике событие click_play2
В результате та же самая ошибка: ReferenceError: yaCounterXXXXXXXX is not defined и как следствие цели не фиксируются.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 09/10/14 в 11:31 |
А ты с иксами также запускаешь?
А то я попробовал на циферки заменить, и всё заработало.
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 09/10/14 в 11:44 |
Да нет, конечно. У меня цифры везде.
Бред какой-то... Сейчас посмотрел другой свой сайт, там все нормально, запуск идет из функции или из ссылки. Все работает. Тут нихрена не работает... Бредятина какая-то.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 09/10/14 в 12:08 |
можно считать вопрос закрытым
|
|
|
|
С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 09/10/14 в 12:28 |
ibiz писал: | можно считать вопрос закрытым |
Да вот пока так и не заработало.
Поставил другой браузер, на другой комп, туда же поставл файрбаг. В консоле вроде все ок, но цели в метрике по прежнему на нуле.
Единсвенное что во вкладке Response я получаю вот такой ответ:
Код: | GIF89a�����������!�����,�������D�; |
т.е. такое впечатление, что с кодировкой что-то не так. Может в этом дело?
|
|
|
|
С нами с 01.05.06
Сообщения: 215
Рейтинг: 74
|
Добавлено: 14/10/14 в 11:42 |
а если так?
Код: |
function start(yaCounterXXXXX) {
yaCounterXXXXXX.reachGoal('click_here');
alert "Сюда кликнули!";
}
<a href='' onclick="start(yaCounterXXXXXX);">link</a>
|
|
|
|
|