我想在点击浏览器按钮时将客户端重定向到自定义控制器。
您是否知道有任何明确的方法可以收回按钮事件并强制呼叫服务器?
贝斯茨, 谢谢
答案 0 :(得分:0)
后退按钮问题在SO上得到了很好的回答。快速搜索会发现大量额外信息。这是一个总结。
您有几种策略可供选择。
1 - 如果您正在开发SPA(或不开发),您可能会发现使用历史API非常有用。 https://developer.mozilla.org/en-US/docs/Web/API/History
https://developer.mozilla.org/en-US/docs/Web/API/History_API
你会发现很多关于历史api的信息。 从这里开始Preserve dynamically changed HTML on back button
基本上,通过为popstate事件添加一个监听器,每次活动历史记录条目发生更改时都会触发该监听器: (在jQuery中)
$(document).ready(function () {
$(window).on('popstate' , function (event) {
console.log('popstate');
console.log(event);
console.log(event.originalEvent);
});
};
http://caniuse.com/#search=history
2 - 为pageshow事件添加一个列表器,当页面加载完成时以及当会话历史记录条目用于导航时将触发,因此基本上转发&后退按钮。 https://developer.mozilla.org/en-US/docs/Web/Events/pageshow
$(window).on('pageshow' , function (event) {
console.log('pageshow');
console.log(event);
console.log(event.originalEvent);
});
http://caniuse.com/#search=pageshow
3 - 使用window.location.hash =' pageHashValue'将哈希值附加到您的网址。 侦听hashchange事件,然后您可以根据需要根据#value进行操作。 https://developer.mozilla.org/en-US/docs/Web/Events/hashchange
这是单页面应用程序中的常用方法。
$(window).on('hashchange' , function (event) {
console.log('hashchange');
console.log(event);
console.log(event.originalEvent);
console.log(window.location.hash);
});
http://caniuse.com/#search=hashchange
最后请注意,虽然您作为开发人员,毫无疑问讨厌浏览器后退按钮(像我一样),但我们的用户往往喜欢它。如果更改后退按钮的预期行为,您还可能会对用户体验产生负面影响。最好的策略是使用这些事件来维持后退按钮的预期行为,而不是尝试更改它。