【发布时间】:2017-03-06 01:01:11
【问题描述】:
当他点击返回浏览器按钮时,我想将客户端重定向到自定义控制器。
你知道有什么明确的方法来捕捉返回按钮事件并强制调用服务器吗?
最好的, 谢谢
【问题讨论】:
标签: javascript c# asp.net-mvc
当他点击返回浏览器按钮时,我想将客户端重定向到自定义控制器。
你知道有什么明确的方法来捕捉返回按钮事件并强制调用服务器吗?
最好的, 谢谢
【问题讨论】:
标签: javascript c# asp.net-mvc
后退按钮问题在 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
你会在 SO 上找到很多关于 history 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
最后请注意,虽然您作为开发人员无疑讨厌浏览器的后退按钮(像我一样),但我们的用户往往会喜欢它。如果您更改后退按钮的预期行为,您也可以预期您的用户体验会受到负面影响。最好的策略是使用这些事件来维持后退按钮的预期行为,而不是尝试更改它。
【讨论】: