我有以下jQuery代码,它在单击后退按钮时关闭引导模式。它工作正常。但是,当它关闭模式时,它应该从URL栏中删除,它确实如此。但是,在这样做的同时,它还会从URL中删除其他“必需”参数。例如:#my-modal-id当 URL 为: 时,它可以正常工作。在这里,它根据脚本从URL栏中删除。目前为止,一切都好。http://localhost/gamearena/index.php#my-modal-id#my-modal-id但是,当URL具有其他参数(例如)时,它会搞砸。在这里,它甚至会随之删除。我如何控制它,以便它只删除之前自行设置的模态ID。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(); } });编辑在诊断了一点之后,我发现这条线负责改变这里的URL的内容,即删除哈希值和其他参数。此外,我注意到抓取URL只到它上面的参数,而不是超出它的参数。因此,在我看来,该函数将URL恢复为状态,而不是因为它无法识别它。因此,我得出的结论是,如果被一个能够将URL提取到(添加哈希部分之前的位置)的函数替换,那么问题将得到解决。因此,请专家对此进行一些阐述。history.replaceState('', document.title, window.location.pathname);window.location.pathnameindex.phpindex.phpindex.php?ref=shreyanshwindow.location.pathnameindex.php?ref=shreyansh
2 回答
Helenr
TA贡献1780条经验 获得超3个赞
您的代码在设置哈希时不会更新历史记录,因此会恢复到较早的 URL 状态。history.back()
这将更新哈希和历史记录:
function addHash (hashString) {
let myHash = '#' + hashString;
location.hash = myHash;
history.replaceState(null, null, myHash);
}
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
尝试
window.location.hash = '';
而不是使用
window.history.back();
如果要从 URL 中删除哈希。它还会触发window.onhashchange
添加回答
举报
0/150
提交
取消