Skip to content

Асинхронная вставка счетчика Hotlog

На одном из сайтов попросили меня вставить счетчик HotLog. Дело ерундовое вобщем-то, но возникла небольшая проблемка — сайт статический, каждая страница сверстана отдельной html-кой. Все бы ничего, да только страничек этих довольно много, и вставлять код в каждую из них было очень лениво. Решил проблему просто — переделал код так, чтоб счетчик создавался без document.write(), и вставил его в одну из js-ок, которая вставляется во все страницы.

//<!-- HotLog -->
(function(){
	document.cookie = "hotlog=1; path=/";
	var cont = null,
		//в селектор нужно указать любой селектор, чтоб локализовать контейнер для счетчика
		//ниже просто пример "от блады"
		selector = "html > body > table > tbody > div";
		//hotlog_id - номер счетчика, его нужно выцепить из оригинального кода вставки
		hotlog_id = "148182",
		hotlog_js = "1.3",
		hotlog_r = "" + Math.random() + "&s=" + hotlog_id + "&im=201&r=" + escape(document.referrer) + "&pg=" + escape(window.location.href);

	hotlog_r += ("&c=" + (document.cookie ? "Y" : "N"));
	hotlog_r += ("&j=" + (navigator.javaEnabled() ? "Y" : "N"));
	hotlog_r += ("&wh=" + screen.width + 'x' + screen.height + "&px=" + (((navigator.appName.substring(0,3) == "Mic")) ? screen.colorDepth : screen.pixelDepth));
	hotlog_r += ("&js=" + hotlog_js);
	hotlog_html = "<a href='http://click.hotlog.ru/?" + hotlog_id + "' target='_top'><img src='http://hit6.hotlog.ru/cgi-bin/hotlog/count?" + hotlog_r + "&'" + "border=\"0\" width=\"88\" height=\"100\" alt=\"HotLog\" /></a>";

	var checkCur = 0,
		checkInt = 100,
		checkTotal = 500;

	var HLInsert = function(){
		if (checkCur++ > checkTotal) {
			console.log("HotLog counter not inserted: container not found by selector [" + selector + "].");
			return;
		}
		cont = document.querySelector(selector);
		if (cont) {
			cont.innerHTML = hotlog_html;
			console.log("HotLog counter inserted.");
		} else {
			window.setTimeout(HLInsert, checkInt);
		}
	};
	HLInsert();

})();
//<!-- /HotLog -->