【问题标题】:Catch back button - ASP回退按钮 - ASP
【发布时间】:2017-03-06 01:01:11
【问题描述】:

当他点击返回浏览器按钮时,我想将客户端重定向到自定义控制器。

你知道有什么明确的方法来捕捉返回按钮事件并强制调用服务器吗?

最好的, 谢谢

【问题讨论】:

标签: javascript c# asp.net-mvc


【解决方案1】:

后退按钮问题在 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

最后请注意,虽然您作为开发人员无疑讨厌浏览器的后退按钮(像我一样),但我们的用户往往会喜欢它。如果您更改后退按钮的预期行为,您也可以预期您的用户体验会受到负面影响。最好的策略是使用这些事件来维持后退按钮的预期行为,而不是尝试更改它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多