【问题标题】:How can one force the back button to not cache in jQuery Mobile?如何强制后退按钮不在 jQuery Mobile 中缓存?
【发布时间】:2012-04-07 18:58:04
【问题描述】:

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

我尝试使用此代码来防止缓存(我从这个问题中找到:How does 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 事件。因此,我无法使用它。

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

【问题讨论】:

  • 您可以使用缓存来检查用户是否登录了每个页面,如果他正在登录,则重定向到主页
  • 谢谢,如何检查用户是否使用我的缓存登录了每个页面?
  • 知道如何在 jQuery 上使用缓存吗?
  • 哦,有这个 API 吗?这是内置在 jQM 中的吗?
  • 如何搜索授权用户?

标签: jquery jquery-mobile


【解决方案1】:

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

您可以将自动生成的后退按钮替换为您自己的后退按钮。即

<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 页。即

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

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

【讨论】:

  • 谢谢! 1. 这个后退按钮会在需要的时候自动出现吗? 2. 为什么要回到历史的 2 页而不是 1 页?
  • 不,我建议您创建后退按钮。我要返回 2 页,以便它跳过登录页面。我想您也可以将其设置为指向某个页面的链接。我只是在展示如何使用后退按钮跳过历史记录的最后一页。
  • 当您说“自动生成的后退按钮”时,您使用的是 data-back-btn="true" 吗?
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多