Pull to refresh

Comments 15

Как насчет (в синтаксисе могу ошибаться, но общая идея):

document.onload=function() { // document.onload заменить на соответствующий фреймворку при необходимости
var element=document.createElement('script');
element.setAttribute('src', 'http://counter.com/script.js');
document.body.appendChild(element)
}

для этого приведена первая ссылка
Как насчет солюшена от Mootools? Оно как бы довольно кроссбраузерное.

По идее если нужна только эта функция, то достаточно нетрудно выпотрошить из библиотеки нужный код.
можно все эти счётчики в отдельный фрейм вынести…
frame.contentDocument.referrer= document.referrer
или типа того…
Кхм… мне кажется есть и другие пути, необязательно менять библиотеку счетчика :)
Вот Вы меняли строки
    var s_code=s.t();if(s_code)document.write(s_code)
    return '<im'+'g sr'+'c=" +"\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'

А теперь оставляем их в покое, а перед вызовом этого скрипта (подключением через тег <script>) вставляем свой код.
  var document_write = document.write;
  document.write = function(str){
    var m = str.match(/src=['"](.+?)['"]/i);
    if (m)
      new Image(1,1).src = m[1];
  }

Вот и все :) Может конечно работать сразу не будет (не проверял), и нужно будет поколдовать с регулярным выражением (или как то иначе выбирать url из текста) — но мысль я думаю ясна.
Если после этого вам нужен будет настоящий метод document.write, просто допишите после скрипта счетчика
document.write = document_write;
Ну ещё можно дописать else document_write.call(document, s_code); (на всякий пожарный =)

Как я понимаю, все эти манипуляции со счётчиками придуманы для (1) отложенной загрузки картинкок-счётчиков, чтобы дать быстрее загрузиться «родной» статике; (2) избавления от дополнительных внешних JS-файлов; (3) избавления от document.write.
Поэтому только подмена document.write может и не помочь оптимизации.

С другой стороны, отложенная загрузка счётчиков сделает статистику менее точной… Вобщем нужен какой-то компромис.
А мы не ставим Гугл.Аналитикс только из-за того, что там происходит загрузка JS из чёрти-от-куда (я что-то даже и не подумал, что там доп.картинка загружается).
Теперь есть повод присмотреться к Г.А. повнимательнее, а заодно и Лирушный счётчик переделать =)
Есть сомнения насчет полезности переноса ga.js на свой сервер.

Конечно, результаты тестов загрузки могут улучшиться, но преимущество ga.js расположенного на сервере google в том, что он используется на многих сайта, а значит уже прокеширован у большинства пользователей. Чтобы убедиться в этом достаточно посмотреть с помощью FireBug > Net (заранее ставим точечку Enabled), никакой загрузки ga.js при переходе с сайта на сайт не происходит сразу передаются данные через картинку.

Более того, перенос ga.js на свой сервер приведет к противоположному результату, браузеру придется загружать его каждый раз (если и прокешируется то только для конкретного сайта, а не для всех сразу).

Вот скриншот FireBug > Net для пары сайтов:
Правилами систем статистики обычно запрещено менять код счетчика.
Был несколько лет назад популярный на западе счетчик, хороший удобный счетчик. (Сейчас уже и название не вспомню)
Его код загружался с удаленного сервера и работал он прекрасно.
Затем контору эту кто-то выкупил и стал у счетчика новый хозяин.
Прошло месяца два после этого и в коде счетчика начал подгружаться не только счетчик, но и бонус — троян.
Вывод: будьте внимательными, когда разрешаете кому-то вставлять в ваш сайт чужой код! (счетчик это, или что угодно другое)
Вопрос из зала — а нафига? Картинки подгружаются асинхронно, на загрузку страницы они не влияют, DOMContentLoaded и иже с ними наступают независимо от того, подгрузились картинки или нет. Что мы выигрываем-то?

GA — это понятно, внешний скрипт останавливает загрузку страницы, его имеет смысл грузить постфактум. А картинки-то чем мешают?
Sign up to leave a comment.

Articles