根据引荐来源,使用者显示不同的电话号码

时间:2011-01-24 20:03:10

标签: javascript bots referrer user-agent

我尝试根据多种因素在网站上提供不同的电话号码,以便我们根据用户到达网页的方式跟踪入站电话。

  1. 通过检查“?provider =”查询字符串来检查用户是否来自广告,如果存在则提供广告编号
  2. 如果没有,请检查userAgent为“机器人”提供“默认”号码
  3. 如果userAgent不是机器人,请检查引荐来源并根据常见的SERP点击提供不同的跟踪号
  4. 此站点无法运行服务器端脚本,因此必须使用javascript(我相当缺乏经验)。我拼凑了一些零碎的东西,但最终希望将所有内容组合在一起,让它在单个.js文件中协同工作,可以在页面加载时调用。

    这是我到目前为止所拥有的:

    <script type="text/javascript">
    //Querystring to check if paid session or organic
         function providercheck() {
            var str= location.href;
                if (str.indexOf("?provider=") > -1) {
                    document.write("paid phone number");
                }
                else {
                    botcheck();
                }
        }
    
        //Check userAgent to serve organic number to bots
         function botcheck() { 
                if(navigator.userAgent.toLowerCase().indexOf("googlebot") <= -1) {
                        document.write("default phone number");
                    }
                else {
                        refcheck();
                    }
        }
    
        //Check for referrer and serve number based on last referrer
        function refcheck() {
            var last_referrer = document.referrer;
            if (last_referrer.indexOf("google") > -1) {
                document.write("google tracking number");
            }
            else if (last_referrer.indexOf("yahoo") > -1) {
                document.write("yahoo tracking number");
            }
            else {
                document.write("default number");
            }
        }
    </script>
    

    非常感谢任何帮助或指导。我还需要设置会话cookie以继续提供相同的号码,直到用户离开该站点,但希望首先使用该

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

将此范围放在页面的某个位置:

<span id="phoneNumber">Superdefaultnumber</span>

然后将此代码放在文档头部的脚本标记中:

var setNumber = function(){
    var spanNode = document.getElementById("phoneNumber");
    if (!spanNode) {throw new Error("Unable to find span");}

    if (location.href.indexOf("?provider=") > -1) {
        spanNode.innerHTML = "paid phone number";
    }    

    //Check userAgent to serve organic number to bots
    if(navigator.userAgent.toLowerCase().indexOf("googlebot") <= -1) {
        spanNode.innerHTML = "default phone number";
    }

    //Check for referrer and serve number based on last referrer
    var last_referrer = document.referrer;
    if (last_referrer.indexOf("google") > -1) {
        spanNode.innerHTML = "google tracking number";
    }
    else if (last_referrer.indexOf("yahoo") > -1) {
        spanNode.innerHTML = "yahoo tracking number";
    }
    else {
        spanNode.innerHTML = "default number";
    }    
};


window.addEventListener("load", setNumber);