window.history.replaceState не работает в моем коде jquery - PullRequest
1 голос
/ 21 июня 2020

При щелчке по фотографии на моей странице она открывается в полноэкранном режиме, при нажатии кнопки закрытия или кнопки возврата я хочу, чтобы она была в нормальном размере.

Она работает нормально, но кнопку «Назад» нужно нажать дважды, чтобы go на предыдущую страницу, если я закрою полноэкранный режим, нажав кнопку закрытия.

Я хочу удалить состояние из истории, когда нажата кнопка с классом «.btn-close», но window.history.replaceState не работает.

Вот jquery код

$('.photo').click(function(){
     history.pushState('','full-screen');
     $('.gallery').addClass('full-screen');
     // some code here //
});

$('.btn-close').click(function(){
   history.replaceState('','full-screen'); // I want to remove state in history that was pushed previously 
    $('.gallery').removeClass('full-screen');
   // some code here //
});

// Trigger click if back button is pressed
$(window).on('popstate', function(){
    $('.btn-close').click();
});

1 Ответ

0 голосов
/ 04 июля 2020

согласно образцу API истории здесь: https://developer.mozilla.org/en-US/docs/Web/API/History

Обновляет самую последнюю запись в стеке истории, чтобы иметь указанные данные, заголовок и, если предоставлен, URL.

, поэтому history.replaceState('','full-screen'); не удаляет состояние в истории, он заменяет последнее состояние таким же.

поэтому я только что отредактировал ваш код следующим образом:

$('.photo').click(function(){
     history.pushState('','full-screen');
     $('.gallery').addClass('full-screen');
     // some code here //
});

$('.btn-close').click(function(){
   history.back(); 
    //$('.gallery').removeClass('full-screen');
   // some code here //
});

// Trigger click if back button is pressed
$(window).on('popstate', function(){
    //$('.btn-close').click(); remove this line and just do remove full-screen class
    $('.gallery').removeClass('full-screen');
});
...