Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Статистика переходов на сайты


Автор: svs1608 17.10.2007, 11:13
Возникла одна проблема: для статистики переходов на другие сайты необходимо определить ссылку, по которой кликнул пользователь на сайте (по которому ведется статистика) и покинул этот сайт. В ссылки никакой код встраивать нельзя (типа onclick, или добавление переменных в URL). 

Можно только вставить кусочек  javascript или php-кода в страницу (наподобие кода счетчика).

Возможно ли реализация средствами PHP+Javascript? 
Если нет, то как Вы видите решение данной проблемы? 
Буду рад любым предложениям с любыми языками программирования.

Автор: vasac 17.10.2007, 15:02
Единственное решение — проверять referer на других сайтах. Если, конечно, к ним есть доступ.

Если же под запретом на onclick подразумевается невозможность вставки его в html, то можно в том самом вставленном кусочке JS пройтись по всем ссылками и повесить на них нужные обработчики.

Автор: svs1608 17.10.2007, 15:22
К сожалению, к другим сайтам доступа нет и изменять ссылки нельзя :( 
Похоже, javascript тут не поможет. ActiveX плагином для IE можно такое реализовать? Может быть существует более простой вариант? 

Автор: vasac 17.10.2007, 15:44
Так как нельзя изменять ссылки? Верстку только? Тогда JS вполне поможет.

Автор: svs1608 17.10.2007, 16:10
Забыл написать одну важную вещь: 
ссылки на сайте тоже генерятся яваскриптом: <script type="text/javascript" src="links.js"></script>, поэтому пройтись по ним своим скриптом не удасться(  И изменить соответственно тоже никак нельзя.

Автор: SelenIT 17.10.2007, 17:11
Код

function findLink(element) { // если клик внутри линка - найдем этот линк
  while(element.parentNode) {
    if (element.href) return element;
    element = element.parentNode;
  }
  return false;
}

function redir(link) { window.location = 'counter.php?url='+link.href; }

if (typeof window.addEventListener != "undefined") {
  window.addEventListener("click", function(e) {
    var t = findLink(e.target);
    e.preventDefault();
    redir(t);
  }, true);
}
else if (typeof document.attachEvent != "undefined") {
  document.attachEvent("onclick", function() {
    var t = findLink(event.srcElement);
    event.returnValue = false;
    redir(t);
    return false;
  });
}
(по мотивам моего варианта из темы "Делаем ссылки с подтверждением-2" в "Наших скриптах")

Скрипт counter.php (или другой серверный скрипт) записывает переданный ему параметром URL куда надо, подсчитывает всю связанную с ним статистику и делает на него редирект ( в PHP - header('Location: '.$_GET['url']);).

Автор: svs1608 17.10.2007, 21:10
SelenIT, спасибо большое! Это как раз то что нужно!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)