Как удалить cook ie при изменении URL страницы, но не во время обновления в jquery? - PullRequest
2 голосов
/ 17 апреля 2020

Я хочу удалить повара ie, если мой URL изменился, как будто я этого не делаю, некоторые функции не работают должным образом. Как я хочу всякий раз, когда моя страница перезагружается, это означает, что она открывается первой, тогда в моем раскрывающемся списке должно быть значение по умолчанию. Я могу сделать это легко, но основная проблема возникает, когда я изменил значение моего раскрывающегося списка, и я также хочу, чтобы в этот раз в раскрывающемся списке была последняя выбранная опция. Я хочу использовать значение по умолчанию, только когда моя страница открывается впервые или я изменяю ее, затем я возвращаюсь к URL-адресу раскрывающейся страницы.

это мой повар ie коды:

// create cookie
function setCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
//delete cookie
function deleteCookie(name) {
     setCookie(name,"",-1);
 }

теперь я пытался отключить моего повара ie таким образом:

if(getCookie("myCookie") !== null && getCookie("myCookie") !== ""){
      $('#formA').val(getCookie("myCookie")).trigger('change');
 }
  else {
      goToDefault(); // this onload has the default value "Teacher"
}

    $(window).on('beforeunload', function(){
         setCookie("myCookie", $('#formA').val(), 12);
    });

   $(window).on('unload', function() {
        if(window.location.pathname !== '/dropdown'){
             deleteCookie("myCookie");   
   }
});

я пытался использовать эту функцию на $(window).on('beforeunload', но тщетно. Это всегда работает, когда я отправляю что-то или страница перезагружается. Все, что я хочу, это следующее поведение:

это мой выпадающий список:

Учитель => опция значения по умолчанию

Ученик

Книги

это вариант моего dropdwon, теперь, если я выберу Student, а затем поработаю над этим параметром, мой раскрывающийся список должен иметь значение «Студент» только в то время, пока я его не изменю. Но если я изменю страницу, а затем снова зайду на эту страницу, я получу значение по умолчанию Teacher. Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Вы можете использовать window.onpopstate, чтобы обнаружить изменения в URL, а затем удалить своего повара ie. Вот пример ниже:

// create cookie
function setCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
//delete cookie
function deleteCookie(name) {
     setCookie(name,"",-1);
 }

if(getCookie("myCookie") !== null && getCookie("myCookie") !== ""){
      $('#formA').val(getCookie("myCookie")).trigger('change');
 }
  else {
      goToDefault(); // this onload has the default value "Teacher"
}

    window.onpopstate = () => {
         deleteCookie("myCookie");
    }

Надеюсь, это поможет.

0 голосов
/ 17 апреля 2020

Я предполагаю здесь, но я полагаю, что это форма, которую вы можете отправить, и вы хотите:

  • получить вариант раскрывающегося меню по умолчанию, если страница открывается в первый раз или в новая страница / вкладка браузера
  • сохранить выбранную опцию, если страница перезагрузится
  • сбросить раскрывающийся список до значения по умолчанию при отправке формы (и, следовательно, возможно, изменить URL)

Возможно, вы захотите посмотреть sessionStorage, что аналогично cookies и localStorage позволяет сохранять некоторые данные (различными способами).

Сохранение данных в sessionStorage так же просто, как:

sessionStorage.setItem('key', 'value');

Важно то, что это может быть идеальным решением для вашей проблемы, потому что из коробки sessionStorage удалит данные, которые вы сохранили, когда Сеанс страницы заканчивается . Согласно документации (которую я рекомендую вам проверить)

сеанс страницы длится до тех пор, пока открыт браузер, и сохраняется после перезагрузки страницы и восстанавливает


Чтобы ответить на ваш вопрос, вы, вероятно, можете:

  • сохранить выбранный параметр с помощью sessionStorage.setItem('key', 'value'), когда он изменяется
  • , использовать sessionStorage.getItem('key') для получения значение раскрывающегося списка
  • . Используйте sessionStorage.removeItem('key'), чтобы удалить сохраненный ключ при отправке формы.

. На новой странице или вкладке не будет найдено ни одной сохраненной опции, поскольку Сессия будет совершенно новой.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...