抓回按钮 - ASP

时间:2016-10-24 09:42:17

标签: javascript c# asp.net-mvc

我想在点击浏览器按钮时将客户端重定向到自定义控制器。

您是否知道有任何明确的方法可以收回按钮事件并强制呼叫服务器?

贝斯茨, 谢谢

1 个答案:

答案 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

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