【问题标题】:submit form when user clicks browser back button当用户单击浏览器后退按钮时提交表单
【发布时间】:2016-12-25 10:55:53
【问题描述】:

我这里有个情况。我有一个包含隐藏值的表单。当用户单击浏览器后退按钮时,应提交表单。我已经控制了后退按钮,但还没有找到浏览器后退按钮的解决方案。这是我的代码。

表格

 <form id="movevalue" action="/media" method="post">
    <input type="hidden" id="pagedetail" name="pagedetail" value="<?php echo $pagenumber; ?>" />
    <input type="submit" value="" style="display:none" />
 </form> 

这是我的脚本。

脚本

    <script>
    $(function(){  
      $(document).bind("keydown keypress", function(e){
      if( e.which == 8 ){ // 8 == backspace
        $('#movevalue').submit();
      }
     });
    });
   window.onbeforeunload = function(evt)    
   {    
    if (typeof evt == 'undefined')     
        $('#movevalue').submit() 
    }

   </script>

window.onbeforeunload 这对我不起作用。

【问题讨论】:

  • backspace 不是浏览器的后退按钮。只是要确定。 ;)
  • 您确实需要处理离开页面。仅处理一个按键无法解决您的问题,因为用户可以使用后退按钮、鼠标按钮或滚轮,而且它不是所有浏览器中的退格键(例如,Chrome 中的 alt + left)。
  • @eisbehr 是的,它不是,但在退格的帮助下它会转到上一页
  • 我应该怎么做@Archer
  • 我认为您需要解释您的要求,因为这听起来像是您修复某些问题的想法,但这是个坏主意。表单提交会将用户重定向到 action 属性中指定的 url。您在这里所说的是您希望用户在单击后退按钮时被重定向到该页面。您不应更改默认浏览器行为。

标签: javascript php jquery html forms


【解决方案1】:

只需使用此代码,这将涵盖页面离开或关闭的所有状态...

<script>
window.onbeforeunload = function() {
    $('#movevalue').submit();
   return true;
};
</script>

【讨论】:

  • 这个显示消息离开与否我不想要这个消息
  • 出于安全原因,某些浏览器会这样做,我认为没有办法阻止显示此消息
  • 我认为在 Cookies 中设置值比这种方式更好,当值改变时发送 Ajax 来改变 cookie 值
  • 您确实意识到提交表单会重定向页面,因此会覆盖后退按钮的默认行为?
【解决方案2】:

试试这个:

$(function () {
if (window.history && window.history.pushState) {
    window.history.pushState('', null, '');
    $(window).on('popstate', function (id) {
        $('#movevalue').submit();
    });
}

});

【讨论】:

  • 这不是为了这个
猜你喜欢
  • 2012-11-08
  • 2023-03-07
  • 1970-01-01
  • 2016-10-29
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多