2013-05-14 4 views
1

Мне не комфортно встраивать внешний JavaScript на моем сайте, чтобы делать все виды отслеживания, которые мне действительно не нужны.JavaScript: уменьшите Google Analytics/Yandex.Metrica до источника и размера экрана

Что мне нужно, это реферер и размер экрана, который не может быть выполнен с помощью статического тега HTML img.

Что является наиболее стандартизированным, поддерживаемым браузером и рендеринговым способом для загрузки невидимого изображения, 1 × 1 gif, с реферером и размером экрана как часть URL-адреса?

Я ищу общий ответ, хотя вы всегда можете его рассказать в терминах Google Analytics GIF Request Parameters.

ответ

1

document.referrer предоставит вам ссылку.

window.screen.width и window.screen.height предоставит вам разрешение экрана.

Вы можете использовать их только с new Image(), чтобы попросить браузеру отслеживать пиксель. Используйте encodeURIComponent для дезинфекции значений перед добавлением их в URL.

var r = encodeURIComponent(document.referrer), 
    x = window.screen.width, 
    y = window.screen.height, 
    img = new Image(); 
img.src = '/tracking.gif?x=' + x + '&y=' + y + '&r=' + r; 

Обратите внимание, что при последующих запросах, это будет храниться в кэше, поэтому вы не получите количество просмотров страниц (хотя вы не сказали, что вы хотели это). Это может быть желательным поведением, так как вы получите неявное уникальное отслеживание посетителей. Однако, чтобы обойти кеширование, вы можете добавить что-то вроде текущей метки времени через new Date().getTime(); в качестве дополнительного параметра.

+0

Будет ли 'новое изображение()' вызывать задержки рендеринга? – cnst

+0

Ну, это не должно (хотя я полагаю, что это зависит от браузера). Например, люди всегда использовали этот метод для предварительной загрузки больших изображений в фоновом режиме. – pauljz

+0

, поэтому он будет загружен как объект изображения, но не вставлен нигде в фактический рендеринг, как хотелось бы здесь? Существуют ли какие-либо браузеры, которые пытаются обмануть здесь, а не загружать объект вообще, пока на него не ссылаются? – cnst