Жду общих отзывов о моем скрипте анализа URL (Javascript)

Я новичок в Javascript и собрал следующее (часть взята из примера в Интернете, остальное сделано мной):

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

Две включенные функции предназначены для (1) сбора реферальных данных входящего посетителя веб-сайта на странице, включая строки запроса URL для аналитики, и сохранения их в файле cookie. (2) Когда посетитель заполняет форму, сценарий считывает значение URL-адреса файла cookie, разбивает этот URL-адрес на сегменты и записывает данные сегмента в уже существующие скрытые входные данные в форме.

Пример URL, который будет захвачен и проанализирован: http://example.com/page?utm_source=google&utm_medium=abc&utm_campaign=name1&utm_adgroup=name2&utm_kw=example1&kw=example2&mt=a&mkwid=xyz&pcrid=1234

function storeRef() { //this function stores document.referrer to a cookie if the cookie is not already present
    var isnew = readCookie('cookiename'); //set var via read-cookie function's output
        if (isnew == null) {
            var loc=document.referrer; 
            createCookie('cookiename',loc,0,'example.com'); //create cookie via function with name, value, days, domain 
        }
}

function printQuery() { //function to parse cookie value into segments
    var ref=readCookie('cookiename'); //write cookie value to variable
    var refElement = ref.split(/[?&]/); //create array with variable data, separated by & or ?. This is for domain info primarily.
    var queryString = {}; //From http://stevenbenner.com/2010/03/javascript-regex-trick-parse-a-query-string-into-an-object/
    ref.replace(
        new RegExp("([^?=&]+)(=([^&]*))?", "g"),
        function($0, $1, $2, $3) { queryString[$1] = $3; } 
    );
//write segments to form field names below.     
    document.getElementsByName('example1')[0].value = refElement[0]; //exampleX is a form hidden input's name. I can not use getElementById here.
//need to be able to manually define these, which is why they aren't in a loop, though I'm not sure how to loop an array referenced in this way
    document.getElementsByName('example2')[0].value = queryString['utm_source']; 
    document.getElementsByName('example3')[0].value = queryString['utm_medium'];
    document.getElementsByName('example4')[0].value = queryString['utm_term'];
    document.getElementsByName('example5')[0].value = queryString['utm_content'];
    document.getElementsByName('example6')[0].value = queryString['utm_campaign'];
    document.getElementsByName('example7')[0].value = queryString['utm_adgroup'];
    document.getElementsByName('example8')[0].value = queryString['utm_kw'];
    document.getElementsByName('example9')[0].value = queryString['kw'];
    document.getElementsByName('example10')[0].value = queryString['mt'];
    document.getElementsByName('example11')[0].value = queryString['mkwid'];
    document.getElementsByName('example12')[0].value = queryString['pcrid'];
}

Благодарю вас!


person Jeremy Collins    schedule 14.03.2013    source источник


Ответы (1)


зачем вам использовать файл cookie для хранения данных, если вы не хотите отслеживать посетителей, посещающих ваш сайт?

person spaceman12    schedule 14.03.2013
comment
Я понимаю, что это странно. Это в основном обходной путь для текущего ограничения в продукте, в то время как другие работают над реальным исправлением. Долгая история, правда. Клиент хочет, чтобы реферальные данные (от первоначального реферера, не относящегося к домену) хранились в форме отправки. - person Jeremy Collins; 14.03.2013