Задать вопрос

Как подключить Яндекс.Метрику в RequireJS?

Коллеги, подскажите, как загрузить Яндекс.Метрику в RequireJS?
  • Вопрос задан
  • 2902 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
Только что тоже этим озадачился. Попробовал так, похоже, работает:

1. в теле HTML остаётся только
<noscript><div><img src="//mc.yandex.ru/watch/XXXXXX?ut=noindex" style="position:absolute; left:-9999px;" alt="" /></div></noscript>


2. в конфиге require в paths дописываем путь для скрипта метрики (название "yametrika" я преложил, вы можете назвать сей "модуль" как угодно): "yametrika": "//mc.yandex.ru/metrika/watch"

3. в первом загружаемом модуле нужно указать этот "yametrika" в зависимостях, но не обязательно назначать ему ответную переменную:
define([ 'backbone','jquery', ... ,"yametrika"], function(...){}


4. в функции, которая там вызывается вставить инициализацию объекта Метрики:
try {
	window.yaCounterXXXXXX = new Ya.Metrika(
		{
			id:XXXXXX
			, trackHash:true
			, ut:"noindex"
		}
	);
} catch(e) { }


Всё, дальше можно, например, обозначать достижения целей:
yaCounterXXXXXX.reachGoal("ME_IS_RICH_NOW");

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

Например, заменой его, в случае неудачи «пустышкой», подгружаемой с вашего сервера, указав её в paths:
"yametrika": [ "//mc.yandex.ru/metrika/watch", "lib/yamertika_dummy"]

где описаны методы метрики:
...
return {
	addFileExtension:function(){}
	, clickmap: function(){}
	, enableAll: function(){}
	, extLink: function(){}
	, file:  function(){}
	, hit:  function(){}
	, replacePhones:function(){}
	, notBounce: function(){}
	, reachGoal: function(){}
	, trackLinks: function(){}
	, params: function(){}
};


или просто обработав ошибку в конфиге require:

requirejs.onError = function(err){ 
    if( err.requireModules.length == 1  &&  err.requireModules[0] == "yametrika") { ... } else throw err;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы