刷新后本地存储会全部搞砸

时间:2018-05-21 10:26:35

标签: javascript

所以,我有一个幸运之轮,你可以每天旋转一次并为你的商店打折。有人要求我做一个功能,如果你来自欧洲,你必须在旋转之前接受GDPR或类似的东西。一切都很好,第一次,然后当我刷新,它不再出现在那里,但是,如果我删除本地存储/饼干它的工作,任何想法?我有以下代码=>

var europe_loc = ['AD', 'AL', 'AT', 'AX', 'BA', 'BE', 'BG', 'BY', 'CH', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FO', 'FR', 'GB', 'GG', 'GI', 'GR', 'HR', 'HU', 'IE', 'IM', 'IS', 'IT', 'JE', 'LI', 'LT', 'LU', 'LV', 'MC', 'MD', 'ME', 'MK', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'RS', 'RU', 'SE', 'SI', 'SJ', 'SK', 'SM', 'UA', 'VA'];
var country_code = bd_get_local('vitals_country_code');
        if(country_code == null) {
            $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
                var country_code = data['country_code'];
                if(country_code.length > 0) bd_store_local('vitals_country_code', country_code);
                var accepted = bd_get_local('cookie_accepted');
                if(accepted == null && europe_loc.indexOf(country_code) >= 0) {
                    $('.bundle-wheel-form').append('<label for="gdprCheck">I have read and accepted the whatever i must type here</label><input type="checkbox" id="gdprCheck" name="europeGdpr">');

                }
            });
        } 

读取本地存储的代码:

function bd_store_local(key, value, exp) {
            if(typeof value === 'object') {
                value = JSON.stringify(value);
            } else {
                value = String(value);
            }

            if(lsSupport) {
                localStorage.setItem(key, value);
            } else {
                createCookie(key, value, exp);
            }
        }

if (typeof localStorage !== 'undefined' && typeof localStorage.setItem !== 'undefined') {
            var lsSupport = true;
        } else {
            var lsSupport = false;
        }

1 个答案:

答案 0 :(得分:0)

只有当用户点击GDPR横幅中的“接受”按钮时,才应设置本地存储项。 因此,仅在用户接受GDPR后才使用此bd_store_local('vitals_country_code', country_code);