gpt4 book ai didi

javascript - 检测用户是否单击了 “back” 按钮 - 移动浏览器

转载 作者:行者123 更新时间:2023-11-28 02:50:27 25 4
gpt4 key购买 nike

我有一个很奇怪的要求。

要求说:在产品详细信息页面上,当在灯箱中打开产品图片然后在移动浏览器上按 back 按钮时,应显示产品详细信息页面,而不是上一页,即产品网格页面

所以,我想搜索如何在跨浏览器中处理后退按钮。一些解决方案适用于桌面浏览器,但没有适用于移动浏览器

我尝试了以下解决方案:

window.onload = function () {
if (typeof history.pushState === "function") {
history.pushState("jibberish", null, null);
window.onpopstate = function () {
history.pushState('newjibberish', null, null);
// Handle the back (or forward) buttons here
// Will NOT handle refresh, use onbeforeunload for this.
};
}
else {
var ignoreHashChange = true;
window.onhashchange = function () {
if (!ignoreHashChange) {
ignoreHashChange = true;
window.location.hash = Math.random();
// Detect and redirect change here
// Works in older FF and IE9
// * it does mess with your hash symbol (anchor?) pound sign
// delimiter on the end of the URL
}
else {
ignoreHashChange = false;
}
};
}
};

也试过这个:

 if (window.history && window.history.pushState) {

$(window).on('popstate', function() {
var hashLocation = location.hash;
var hashSplit = hashLocation.split("#!/");
var hashName = hashSplit[1];

if (hashName !== '') {
var hash = window.location.hash;
if (hash === '') {
alert('Back button was pressed.');
}
}
});

也试过了

window.onbeforeunload = function (e) {
var e = e || window.event;
var msg = ""
$("#blueimp-gallery").hide();
// For IE and Firefox
if (e) {
e.returnValue = msg;
}

// For Safari / chrome
return msg;
};

最佳答案

您肯定已经了解到,onbeforeunload 提供了一种简单地取消导航事件的方法(请参阅 this answer 以获得良好的起点),但它并不总是如此您想要在所有浏览器中使用(出于安全原因,无论您做什么,许多浏览器都只会显示确认弹出窗口)。如果您还没有,请先试一试;在您当前的代码示例中,我没有看到任何取消尝试,只是历史操作。

否则,使用散列路由可能会有所帮助 - 最好通过一个库来管理 URL 散列作为唯一的 View 路由(融入 Angular、React 等)并将更改推送到 history你。给模态状态一个唯一的 URL(根据我的经验通常不会这样做)意味着“返回”只会关闭模态而不是重新加载页面。

关于javascript - 检测用户是否单击了 “back” 按钮 - 移动浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com