0

私はJavascriptにかなり慣れていないので、以下を組み立てました(一部はオンラインの例からのもので、残りは私によるものです):

これは確実に機能します。違反しているベストプラクティスの数が気になります。このスクリプトの後半部分について、一般的なフィードバックを提供してくれる親切な方がいらっしゃいましたら、よろしくお願いいたします。

含まれている 2 つの機能は、(1) 分析用の URL クエリ文字列を含む、ページ上の着信 Web サイト訪問者の参照データをキャプチャし、それを Cookie に保存することです。(2) 訪問者がフォームを完了すると、スクリプトは Cookie の 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'];
}

ありがとうございました!

4

1 に答える 1

0

サイトにアクセスした訪問者を追跡したい場合を除いて、そのためのデータを保存するためにCookieを使用する必要があるのはなぜですか?

于 2013-03-14T06:09:25.963 に答える