JQM 1.1 - data-rel =仅在同一个域中返回?

时间:2012-08-24 12:42:37

标签: mobile jquery-mobile

jQuery Mobile(至少1.1)提供了一个很好的功能,即回归"按钮。根据章节"后退按钮链接" in the docs,在链接/按钮上添加data-rel="back"将模拟与网络浏览器后退按钮完全相同的功能。也就是说,返回用户Web浏览器中的上一页。

此功能很棒(并且有效),但有一个用例,您无法为移动应用获取正确的行为

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

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

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

我希望这一切都很明确:)

所以我认为解决方案是:

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

所以......问题:jqm支持这个吗?我在文档中遗漏了什么吗?它是以某种方式实现的吗?我需要自己实施吗?

1 个答案:

答案 0 :(得分: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)来禁用后退按钮,但那么用户将如何返回?或者,您可以向用户发出警告,要求他们确认他们是否要离开您的页面。