我已经生成了弹出式调查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");

任何建议都会有所帮助!谢谢
答案 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来跟踪用户在该站点上的时间。然后,您将决定用户是否应该查看调查。如果不了解您的环境,我可以为您推荐这个简单的客户端解决方案。