1

当用户登录我的 jQuery Mobile 应用程序并按下自动生成的后退按钮时,他们会返回登录屏幕。如何防止这种影响?

我尝试使用此代码来防止缓存(我从这个问题中发现:How do dos one disable Caching in jQuery Mobile UI)。

jQuery('div').live('pagehide', function(event, ui){
  var page = jQuery(event.target);

  if(page.attr('data-cache') == 'never'){
    page.remove();
  };
});

此代码确实可以防止缓存。但是,由于某种原因,它破坏了我的表单中的所有弹出、多个选择选项框,这些选项框依赖于 pagehide 事件。因此,我无法使用它。

什么是防止用户在登录并单击返回后进入登录屏幕的可靠方法?

4

1 回答 1

2

问题不在于缓存。它是 JQM 使用 history.replaceState 在 ajax 环境中跟踪导航的方式。阅读更多>> http://jquerymobile.com/demos/1.1.0-rc.2/docs/pages/page-navmodel.html

您可以用自己的后退按钮替换自动生成的后退按钮。IE

<div data-role="header">
    <a data-role="button" data-icon="arrow-l" class="back">back</a>
    <h1>Page after login</h1>
</div>

然后将单击绑定到该按钮以使用 window.history.go(-2) 导航回历史记录中的 2 页。IE

$(document).delegate('.back','click',function(){
    window.history.go(-2);
});​​​​​​​​​​​​​​​

另请注意,默认情况下,JQM 的 ajax 历史系统不会跟踪对话框页面。因此,如果您有某种类型的 ajax 登录系统,它包含在一个对话框页面中,它就不会被插入到历史记录中。而且您自动生成的后退按钮可以正常工作。这是假设您没有禁用 ajax。祝大卫好运,希望对您有所帮助!

于 2012-04-07T19:51:35.853 回答