2013-03-14 4 views
0

나는 자바 스크립트에 비교적 새로운 해요, 그리고 (, 나머지는 나입니다 일부 온라인 예에서입니다) 다음과 같은 조립 :

이 작품을 믿을만하게, 나는 얼마나 많은 베스트 프랙티스를 위반하고 있는지 궁금 할뿐입니다. 누군가가이 스크립트의 후반 부분에 대한 일반적인 피드백을 제공 할만큼 훌륭하다면, 그 점이 인정 될 것입니다.

두 가지 기능은 (1) 분석을위한 URL 쿼리 문자열을 포함하여 수신 웹 사이트 방문자의 추천 데이터를 캡처하여 쿠키에 저장하는 것입니다. (2) 방문자가 양식을 완성하면 스크립트는 쿠키의 URL 값을 읽고,이 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']; 
} 

감사합니다!

답변

0

왜 사이트를 방문한 방문자를 추적하고 싶지 않으면 쿠키를 사용하여 데이터를 저장해야합니까?

+0

나는 그것이 이상하다는 것을 알고 있습니다. 이는 기본적으로 제품의 현재 제한 사항에 대한 해결 방법이며 나머지는 실제 수정 사항을 작업하고 있습니다. 긴 이야기. 클라이언트는 양식 제출에 저장된 조회 데이터 (초기 도메인 참조자가 아닌)를 원합니다. –