如何为SurveyMonkney Javascript创建cookie?

时间:2016-06-21 15:13:34

标签: javascript html cookies

我已经生成了弹出式调查Jacascript代码,显示了我的调查。我如何创建一个cookie,以便它只在用户进入网站后30秒弹出,并且每30天只触发一次?

这是我的脚本文件:



(function(t, e, n, o) {
  var s, c, a;
  t.SMCX = t.SMCX || [], e.getElementById(o) || (s = e.getElementsByTagName(n), c = s[s.length - 1], a = e.createElement(n), a.type = "text/javascript", a.async = !0, a.id = o, a.src = ["https:" === location.protocol ? "https://" : "http://", "widget.surveymonkey.com/collect/website/js/AhN7nUpZa9_2F3gC6vSJkN3VsWkmDw6Oj7PaJqgjpmRLRGE8ot_2F8YzI1OnVSkE7Fll.js"].join(""), c.parentNode.insertBefore(a, c))
})(window, document, "script", "smcx-sdk");




任何建议都会有所帮助!谢谢

1 个答案:

答案 0 :(得分:0)

假设你的功能正常,你可以试试这个:

1)在页面加载时,检查您自己的cookie(无论何时创建它,您将设置为30天后到期。)

2)如果你找到一个cookie,你就完成了。用户在过去30天内看过您的调查问卷。

3)如果没有cookie,请等待30秒,将cookie设置为在30天后过期,并显示调查结果。

<script>
function showSurvey() {
    console.log('About to show survey...');
    // put your survey popup function here
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1);
        };
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    };
    return "";
}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function checkCookie() {
    var cookieToCheck = getCookie("myCookie");
    if (cookieToCheck !== "") {
        console.log('Do nothing; user has cookie.');
    } else {
        setTimeout(function() {                 // do this after 30 seconds
          setCookie("myCookie", "foo", 30);     // set your cookie
          showSurvey();
        }, 30000);
    }
}

checkCookie();  // check the cookie on page load
</script>

请注意,如果用户重新加载页面,他们将杀死你的setTimeout()。如果您需要处理页面重新加载,您需要一个服务器端会话或另一个cookie来跟踪用户在该站点上的时间。然后,您将决定用户是否应该查看调查。如果不了解您的环境,我可以为您推荐这个简单的客户端解决方案。