【问题标题】:Cordova: page empty when coming back from external linkCordova:从外部链接返回时页面为空
【发布时间】:2015-11-09 12:57:28
【问题描述】:

当从 Cordova 应用程序访问外部页面,然后使用返回按钮返回应用程序时,应用程序页面是空的,或者更准确地说,动态添加到页面的所有内容都消失了。 无论链接是本机<a href="..."> 还是通过window.open()cordova.InAppBrowser.open() 访问,似乎都是这种情况。唯一不会发生这种情况的方法是通过“_system”参数指定实际浏览器。

有没有办法防止这种情况,或者这是正常行为?我应该在返回时简单地重建动态页面吗?我可以这样做,但似乎没有任何事件在返回时被触发,甚至没有pageshow

【问题讨论】:

  • 确实,正如@Jeff 所说,应用程序完全重新启动,与初始启动相同,因此所有动态内容都丢失了(javascript 变量也是如此)并且必须重新构建页面,可能在重新加载之后来自LocalStorage 的数据。根据初始应用启动,有一个区别:活动页面是我们离开的页面,尽管它的 pagebeforecreatepagebeforeshow 未被调用。因此,如果您的应用程序在这些事件上设置页面,则不会调用您的设置。所以在deviceready,你应该调用所有页面的设置代码,所以它们在从浏览器返回时被重建。

标签: javascript cordova browser inappbrowser


【解决方案1】:

向后导航会刷新(重新加载)页面......因此任何动态添加到页面的内容都将正确消失。您可以在 URL 上使用哈希标签来获取简单信息,或者使用 localStorage 来获取有关页面状态的更复杂信息,并在重新加载时根据它重新填充页面。

pageshow most like 不会触发,因为在 JS 代码中做了一些假设。尝试收听 $(document).ready 以进行调试。它也可能是由此处描述的问题引起的(因为缓存):'pageshow' is not received when pressing "back" button on Safari on *IPad"

指定系统会导致页面在新窗口中打开...所以

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多