Повар ie показывает предупреждение после перехода на следующие шаги (страница) - PullRequest
0 голосов
/ 20 февраля 2020

Я использую процесс Stepper for Register (например: step-1 ... to, step3), каждый шаг которого представляет собой отдельную страницу в bootstrap4.

Когда страница загружается Cook ie предупреждение будет отображаться. Но после закрытия он (хранится в локальном хранилище) или будет удален через 10 секунд. когда я перейду к следующему шагу (шаг-2), снова появится предупреждение Cook ie. На самом деле не хочу показывать его снова (если однажды закрыл) до конца (последний шаг).

Есть ли способ решить эту проблему? Ниже упоминается код, который я использую прямо сейчас. Пожалуйста, помогите.

$(function () {
  if (getCookie('BlockPop') == null || (getCookie('BlockPop') != undefined && getCookie('BlockPop').toLowerCase() != 'true')) {
        setCookie('BlockPop', 'true', 30);
        $('.popuphome').slideToggle(1000);
        $('.close').click(function () {
            setCookie('BlockPop', 'true', 30);
            $('.popuphome').slideUp(1000);
        });
        setTimeout(function () {
            $('.popuphome').slideUp(1000);
        }, 30000);
    }
});

function setCookie(ckname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = ckname + "=" + cvalue + "; " + expires;
}
function getCookie(ckname) {
    var name = ckname + "=";
    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 "";
}

1 Ответ

1 голос
/ 20 февраля 2020

Во-первых, != undefined - это не то, как проверить, если что-то не определено, к сожалению. Поэтому измените это условие на

typeof getCookie('BlockPop') !== 'undefined'

Далее, ваш полный оператор if по существу говорит: «Если BlockPop cook ie равен нулю или если он определен и имеет значение 'true', то ...»

Я не уверен, как будет выполняться код, защищенный вашим оператором if , а не .

Я думаю, вы получите желаемый эффект, если вы измените условие быть

if(getCookie('BlockPop') === '')

Потому что теперь вы проверяете, является ли повар ie пустым, и затем вы установите его. getCookie возвращает пустую строку для неопределенного повара ie, поэтому вам не нужно проверять null или undefined.

Как только он установлен, вы не будете звонить остальным код на 30 дней. Параметр времени (exdays), равный setCookie, представляет собой количество дней до истечения срока действия повара ie, поэтому он будет длиться более 10 секунд.

Если вы хотите, чтобы повар ie истекает через 10 секунд, затем измените код в setCookie, который устанавливает срок действия:

d.setTime(d.getTime() + (exdays * 1000));

и вызовите setCookie как:

setCookie('BlockPop', 'true', 10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...