你好有Stack Overflow用戶。我創建了一個很好的小腳本,將A/B測試信息從其API添加到我們的一個會話cookie中,以存儲在我們的數據庫中。這個腳本適用於所有瀏覽器,但IE(驚喜!)。這是代碼:Javascript會話cookie不寫在IE9中
<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>
爲了給一點的解釋,該功能將「TP = 123456-7890123」的字符串追加到acqsource餅乾。然而,當它執行getCookie函數時,IE會:a)找不到它,或者b)說它不存在(它應該是,頁面在加載時創建該cookie)。這完全是在DOM完成後加載的,所以這不是問題。
我已經詳盡地搜索了這個問題,甚至找到了我公司的其他幾個開發人員,我們所有人都難倒了。提前致謝!