2013-12-24 3 views
0

У меня есть необходимость хранить пользовательские параметры строки запроса во время их пребывания на веб-странице. Я решил проанализировать параметры строки запроса и вставить их в файл cookie сеанса, поэтому, когда у меня есть код, которому нужны исходные параметры запроса, я вызываю cookie.Сохранение параметров строки запроса в cookie сеанса

Это, кажется, не всегда работает, особенно в IE. Может ли кто-нибудь дать мне несколько советов? Я думал, возможно, хранить его в хранилище dom, но я не уверен, что это правильный подход. Код находится в моем заголовке страницы и доступен на всех страницах сайта.

Вот что я собрал:

var urlParams; 
(window.onpopstate = function() { 
    var match, 
     pl  = /\+/g, 
     search = /([^&=]+)=?([^&]*)/g, 
     decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, 
     query = window.location.search.substring(1); 

    urlParams = {}; 
    while (match = search.exec(query)) 
     urlParams[decode(match[1])] = decode(match[2]); 
})(); 

function set_cookie(name, value) { 
    var cookie = [name, '=', JSON.stringify(value), '; domain=.', window.location.host.toString(), '; path=/;'].join(''); 
    document.cookie = cookie; 
} 

function read_cookie(name) { 
var result = document.cookie.match(new RegExp(name + '=([^;]+)')); 
result && (result = JSON.parse(result[1])); 
return result; 
} 

if(read_cookie('tbts') === null){ 
    set_cookie('tbts', urlParams); 
} 

var urlParamsCookie = read_cookie('tbts'); 

ответ

0

Вы не указали, какую версию IE, но, по словам Can I Use, popstate пока не доступен до IE10.

+0

Я тестировал в IE10. UrlParamsCookie var не всегда отображается в dom. Можете ли вы предложить альтернативу window.onpopstate? Кроме того, спасибо за этот сайт, о котором я не знал. – Ptrkcon

Смежные вопросы