【问题标题】:JQM 1.1 - data-rel=back only in the same domain?JQM 1.1 - data-rel=back 只在同一个域中?
【发布时间】:2012-08-24 12:42:36
【问题描述】:

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

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

所以你有一个网站。它是 jquery 移动版。

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

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

我希望这一切都清楚:)

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

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

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

【问题讨论】:

    标签: mobile jquery-mobile


    【解决方案1】:

    我不确定这是否完全可能。 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) 来禁用后退按钮,但是用户将如何返回?或者,您可以向用户发出警告,要求他们确认他们正在离开您的页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      相关资源
      最近更新 更多