【问题标题】:How to navigate back one page using $.mobile.changePage如何使用 $.mobile.changePage 导航回一页
【发布时间】:2012-01-02 14:45:59
【问题描述】:

我能找到的所有关于向后导航的 JQuery Mobile 文档都假设我将使用锚标记来执行此操作,并建议我将 data-rel="back" 添加到标记中。

我没有从标签导航,我正在与 PhoneGap 混合,这意味着我正在调用像 PhoneGap.something(goForwardOnSuccess,goBackwardsOnFailure); 这样的 JavaScript 函数

在哪里

function goFowardOnSuccess()
{
    $.mobile.changePage('#next', { transition: 'pop' });
}
function goBackwardOnFailure()
{
    $.mobile.changePage(/* I HAVE NO IDEA WHAT GOES HERE */);
}

我使用这种东西的主要目的之一是设置一个“忙于在本机代码中做某事,不要碰我......”点击带有“加载”内容的屏蔽屏幕,然后关闭它在完成函数中。

但是,我发现当我从屏幕上的按钮尝试“弹出”到位时,我发现自己回到了主页(返回两个级别)。

关于如何从纯 javascript 向后导航的文档非常模糊。任何线索都会非常好。

还请注意,我倾向于从任何地方弹出这些繁忙的屏幕,因此明确编码转换回我想要的屏幕并不是一个真正的选择。

【问题讨论】:

    标签: jquery-mobile


    【解决方案1】:

    文档中肯定没有说清楚,但有一些小典故。

    尝试使用:

    $.mobile.back();
    

    【讨论】:

      【解决方案2】:

      data-rel="back" 用于类似的事情是有意义的: <a href="#" data-rel="back" ...

      但最好在javascript代码博客中使用history.back();,即

      .....
      .....  
          var cId = $(this).val();
          // do something with control ID then
      .....
      .....
          goBackParent();
      }
      function goBackParent(){
           history.back();
      }
      

      【讨论】:

        【解决方案3】:

        为什么不直接使用data-rel="back" 作为后退按钮的属性,这将使用户返回一页。

        也相当于history.back()

        【讨论】:

        • 如上所述 - “我不是从标签导航,而是与 PhoneGap 混合使用,这意味着我正在调用诸如 PhoneGap.something(goForwardOnSuccess,goBackwardsOnFailure) 之类的 JavaScript 函数;”所以我想返回作为在页面上做出选择的副作用。
        【解决方案4】:

        您将返回“两个级别”,因为如果您通过

        以编程方式触发 changePage
        $.mobile.changePage('#next', { transition: 'pop' });
        

        省略所有其他选项,您将触发两个功能:

        • 更改页面
        • 散列变化

        通常在常规转换时,hashChange 被阻止,而在向后转换时,changePage 应该被阻止(这里不确定......)。因此,在您的情况下,您有(想要的) hashChange 和不需要的(changePage)转换。

        检查 JQM docs 以获取可以在 changePage 调用中传递的选项,或查看 1.0 源代码 #3140 以获取所有可用选项。我也会尝试在你的函数调用中传递 changeHash:falsefromHashChange:true 看看会发生什么。

        如果你想更深入地挖掘,你将不得不寻找 ignoreNextHashChange 以及它的值如何通过 JQM 变化。

        【讨论】:

          【解决方案5】:

          拨打history.back() 即可。

          【讨论】:

          • 不起作用。跳回两个级别,我想这并不奇怪,因为如果选项中有“reverse:true”,这就是 changePage 所调用的。我最终存储了 $.mobile.activePage,然后使用 changepage 和 reverse: true 转换到那个。这似乎可行,但应该没那么难。
          【解决方案6】:

          从您重定向的位置添加 changeHash: true 。 然后使用当前页面中的“history.back()”或“history.go(-1)”。它只会带您返回 1 页。

          $.mobile.changePage("yourpage.html",{ transition: "flip", changeHash: true});
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-07-03
            • 1970-01-01
            • 2020-08-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-05
            • 2016-04-17
            相关资源
            最近更新 更多