【问题标题】:jQuery Mobile programmatically reinitialise/restart appjQuery Mobile 以编程方式重新初始化/重新启动应用程序
【发布时间】:2013-09-09 22:16:20
【问题描述】:

我正在用 phonegap 和 jquery mobile 编写一个应用程序。

为了处理未知错误,我需要完全重新启动我的应用并将所有变量和动态内容重新初始化为与第一次运行相同。

最初我只是使用 $.mobile.changePage($'#home') 这显然不起作用,因为它不会重新初始化任何动态内容或变量,所以我最终会加倍。

我可以在 jquery mobile 中调用一个方法来完全重启应用程序并将所有内容设置回初始设置吗?

【问题讨论】:

    标签: jquery-mobile cordova


    【解决方案1】:

    对于一个完整的解决方案,我认为你不走运。

    iOS 绝对*不允许以编程方式杀死应用程序,更不用说以编程方式启动应用程序了。

    Android 确实允许杀死应用程序。虽然没有记录(我可以找到),但您可以使用

    navigator.app.exitApp();

    杀死当前应用程序。

    但是,您仍然无法以编程方式重新启动它。

    我认为最好的办法是编写代码来重置变量和本地存储/数据库(如果使用)。然后通过document.location.href = 'index.html?var=xxx'; 重新加载索引页面,其中 xxx = 当前时间戳。将时间戳放在末尾将确保它拉取页面的非缓存版本。

    *编辑:添加 not 到我关于 Apple 允许应用程序杀戮的声明中。

    【讨论】:

    • 关于navigator.app.exitAPp() 和时间戳href 的好提示。
    • 我刚收到通知说很多人都在阅读这个帖子,所以我想我会更新一点。杀死该应用程序会导致 IOS 出现问题,并且如果您使用在后台处于活动状态的 cordova 插件也会导致问题,因此我实际上最终编写了一个手动重置函数,该函数通过并将所有变量设置回默认值。不理想或不漂亮,但在功能上运行良好。
    【解决方案2】:

    试试,document.location.href

    document.location.href = 'index.html';
    

    【讨论】:

    • document.location.href = 'index.html';在ios中不工作
    【解决方案3】:

    你试过reload应用吗?

    reload() 方法用于重新加载当前文档。
    reload() 方法的作用与浏览器中的重新加载按钮相同。
    默认情况下,reload() 方法从缓存中重新加载,但您可以通过将 forceGet 参数设置为 true 来强制重新加载从服务器获取页面。

    location.reload();
    

    【讨论】:

      【解决方案4】:

      您可以检查特定页面的 pagebeforeshow 并初始化为您想要的任何值,而不是重新启动应用程序。这样每次您访问该页面时,值都会被初始化。

      $.mobile.changePage( "#PageID", {
           reverse: false,
          changeHash: false
      
      });
      
      
      $(document).on('pagebeforeshow','#PageID',function(){
      
      /* Intialise all your variables here*/
      
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        相关资源
        最近更新 更多