1

jQuery Mobile(至少 1.1)提供了一个不错的功能,即“返回”按钮。根据文档中的“后退按钮链接”一章,添加data-rel="back"链接/按钮将模拟与 Web 浏览器后退按钮完全相同的功能。也就是说,返回到用户 Web 浏览器中的上一页。

此功能很棒(并且有效),但是在一个用例中,您没有获得移动应用程序的正确行为

所以你有一个网站。这是jquery手机。

  • 页面 A 是登陆页面
  • 页面 B 是页面 A 的子页面
  • 页面 C 是页面 B的子页面,也是页面 A 的子页面
  • 现在 Bob 将页面 C 的 URL 提供给 Alice
  • Alice 转到页面 C 并使用后退按钮,因为她想结帐站点的其余部分
  • Alice 的网络浏览器会返回到她之前所在的页面(可能是 stackoverflow!)
  • 爱丽丝不明白为什么她被重定向到另一个网站,在她的痛苦中,她把手机扔进了湖里。

由于有两种方式可以转到页面 C,因此开发人员放置了一个后退按钮,因为在名义上的用例中,每个用户从页面 A 进入并浏览,页面 C 上的后退按钮按需要工作;也就是说,它要么返回页面 A,要么返回页面 B。但是 Alice 和 Bob 在这里,返回按钮会转到一个完全不同的网站!

我希望这一切都清楚:)

所以我认为的解决方案是:

  • 如果用户历史堆栈中的前一个网站在同一个域上:使用它返回
  • 如果不是:使用href属性值作为导航规则。

所以...问题:jqm 支持吗?我错过了文档中的某些内容吗?它是否以某种方式实施?我需要自己实施吗?

4

1 回答 1

0

我不确定这是否完全可能。JQuerymobile 可以让您找到上一页,如下所示:

$("#C").on("pageshow",function(){
  if ( "undefined" == typeof $(ui.prevPage)[0] ){
     //disable-back button here
     //$("#C").removeAttr('data-rel');
     // $(window).unload( function () { alert("Bye now!"); } );
  } 
});

但是,浏览器历史记录由浏览器管理,当您访问此页面时,历史记录已经设置。如果您使用的是 phonegap 之类的框架,您可以通过调用禁用后退按钮navigator.app.overrideBackbutton(true),但是用户将如何返回?或者,您可以向用户发出警告,要求他们确认他们正在离开您的页面。

于 2012-08-24T15:13:53.847 回答