您好 Stack Overflow 用户。我创建了一个不错的小脚本,将 A/B 测试信息从他们的 API 附加到我们的一个会话 cookie 中,以存储在我们的数据库中。该脚本适用于除 IE 以外的所有浏览器(惊喜!)。这是代码:
<script>
function addTParam() {
function getCookie(acqsource) {
var i, x, y, ARRcookies = document.cookie.split(';');
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));
y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);
x = x.replace(/^\s+|\s+$/g, '');
if (x == acqsource) {
return unescape(y);
}
}
}
if (typeof (abtester) != 'undefined') {
var experimentId = 0;
var variationId = 0;
var variationIdx = -1;
var activeExpts = abtester.activeExperiments;
var values;
var newArray = [];
for (var i = 0; i < activeExpts.length; i++) {
experimentId = activeExpts[i];
if (abtester.variationIdsMap.hasOwnProperty(experimentId)) {
variationId = abtester.variationIdsMap[experimentId];
newArray = newArray.concat(variationId);
}
}
newArray = activeExpts.concat(newArray);
values = newArray.join('-');
var contents = getCookie('acqsource');
if (values && values.length > 0 && (contents.indexOf(values) === -1)) {
contents += "&tp=" + values;
document.cookie = "acqsource=" + contents + "; domain=domain.com; path=/";
}
}
}
$(document).ready(function () {
addTParam();
});
</script>
为了解释一下,这个函数会在 acqsource cookie 中附加一个字符串“tp=123456-7890123”。但是,当它执行 getCookie 函数时,IE 要么:a) 找不到它,要么 b) 说它不存在(它应该在加载时创建该 cookie)。这一切都是在 DOM 完成后加载的,所以这不是问题。
我已经在谷歌上详尽地搜索了这个问题,甚至联系了我公司的其他几个开发人员,我们所有人都被难住了。提前致谢!