如何使用原生JavaScript在点击浏览器返回按钮时重定向页面?
实现点击浏览器返回按钮时重定向页面
你的代码存在几个关键问题,导致无法实现需求:
setTimeout(prev(), 0)里直接执行了prev()函数,而非将函数作为回调传入,正确写法是setTimeout(prev, 0),但即便修正,这个逻辑也和监听返回按钮无关。window.history.forward()和window.location.href同时调用逻辑冲突,而且这部分代码没有监听返回操作的逻辑。window.onunload = function() { null }是空函数,无法起到任何作用。
要实现点击浏览器返回按钮时重定向页面,正确的做法是监听popstate事件——浏览器前进/后退操作会触发这个事件。以下是可行的原生JS实现:
// 页面加载时新增一条当前页面的历史记录,避免首次加载时的popstate触发误跳转 window.history.pushState({ page: 'current' }, '', window.location.href); // 监听popstate事件 window.addEventListener('popstate', function() { // 触发返回操作时,重定向到目标页面(注意使用完整URL) window.location.href = 'https://www.google.com'; });
关键说明:
- 使用
history.pushState添加历史记录条目,确保用户点击返回时会触发popstate事件,而不是直接跳转到上一个页面。 - 重定向的URL必须是完整的(包含http/https),否则会被当作当前域名下的相对路径处理。
- 部分浏览器在页面首次加载时也会触发
popstate事件,添加初始历史记录可以避免这种情况下的误跳转。
内容的提问来源于stack exchange,提问作者Omoniyi Nelson
相关产品推荐
相关产品推荐

