У меня есть следующий код jQuery, который закрывает модальное окно bootstrap при нажатии кнопки возврата. Работает нормально. Однако, когда он закрывает модальное окно, он должен удалить #my-modal-id
из строки URL, что он и делает. Но при этом также удаляются дополнительные «обязательные» параметры из URL. Например:
Он отлично работает, если URL-адрес: http://localhost/gamearena/index.php#my-modal-id
. Здесь он удаляет #my-modal-id
из строки URL согласно сценарию. Все идет нормально.
Однако, когда URL-адрес имеет дополнительные параметры, такие как http://localhost/gamearena/index.php?ref=shreyansh#sidebar-left
, происходит сбой. Здесь он даже удаляет ?ref=shreyansh
вместе с ним. Как мне управлять им так, чтобы он удалял только модальный идентификатор, установленный ранее.
Вот код:
// Close model on clicking back button / swiping back
$('div.modal').on('show.bs.modal', function() {
var modal = this;
var hash = modal.id;
window.location.hash = hash;
window.onhashchange = function() {
if (!location.hash){
$(modal).modal('hide');
}
}
});
$('div.modal').on('hidden.bs.modal', function() {
var hash = this.id;
history.replaceState('', document.title, window.location.pathname);
});
// when close button clicked simulate back
$('div.modal button.close').on('click', function(){
window.history.back();
})
// when esc pressed when modal open simulate back
$('div.modal').keyup(function(e) {
if (e.keyCode == 27){
window.history.back();
}
});
EDIT
Немного диагностировав, я обнаружил, что строка history.replaceState('', document.title, window.location.pathname);
отвечает за изменение содержимого URL здесь, то есть удаление ha sh и других параметров. Кроме того, я заметил, что window.location.pathname
захватывает URL только до index.php
, а не параметры за его пределами. Следовательно, на мой взгляд, функция возвращает URL-адрес в состояние index.php
вместо index.php?ref=shreyansh
, поскольку не может его распознать. Таким образом, я прихожу к выводу, что если window.location.pathname
заменить функцией, которая может получать URL до index.php?ref=shreyansh
(местоположение до добавления части ha sh), проблема будет решена. Следовательно, экспертов просят пролить свет на это.