Forked from thedamon/backbutton close bootstrap modal
Last active
June 1, 2021 08:13
-
-
Save tdsymonds/23917215f591a9e1442a38783c77f0f0 to your computer and use it in GitHub Desktop.
Cause back button to close Bootstrap modal windows
Line 18 can be removed, right?
var hash = this.id;
Works great, thanks!
My only problem was that clicks next to the modal closed it, but did not clear the history entry, so I had to click through several empty history entries.
My solution was to listen to the hide.bs.modal
-event (instead of the different close-triggers individually) and using history.back() if the hash-fragment is still there (user did not use back button, but close icon, overlay, etc).
Might be helpful to someone else:
$('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('hide.bs.modal', function(e) {
// hash fragment is still there? User did not use back-button, reset browser history manually now
// check referrer to disable this for links that where copied and opened with the hash
if (location.hash && document.referrer.includes(location.host)) {
window.history.back();
}
});
edit: Added a referrer-check
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This doesn't quite work on forward as navigating forward doesn't refresh the page (at least on macOS in Chrome and Safari this seems to be the case).
To fix this, add
to the onhashchange function.
There does seem to be some remaining history bug using my solution here where after pressing forward, sometimes one must now press back twice to get back.