【问题标题】:jQuery / Cordova history issue - iOS 9 history broken?jQuery / Cordova 历史问题 - iOS 9 历史记录已损坏?
【发布时间】:2015-09-28 09:58:23
【问题描述】:

我只是在处理一个应用程序。上周开始后,我添加了几页。今天我尝试实现后退按钮,但我失去了理智......现在我试图让它工作四个小时,但我无法做到,因为 iOS 9 中有一些奇怪的行为。

所以为了更好地理解我的硬件设置:

  • Mac Mini - OS X - Yosemite 10.10.5
  • iPhone 6S - iOS 9.0.1 (13A405)
  • iPhone 6+ - iOS 9.0 测试版 (13A4305g)
  • iPhone 5 - iOS 9.0 (13A344)
  • iPad 4 - iOS 8.3 (12F69)

为了更好地理解我的应用程序设置:

  • 版本 5.3.3 的 Cordova
  • Cordova 平台 iOS 版本 3.9.1
  • jQuery 在 2.1.4 缩小
  • jQuery mobile 在 1.4.5 缩小

问题

所以我想通过 jQuery 在我的应用程序中实现一个后退按钮。通常的方法是添加一个带有data-rel="back"data-transition="reverse" 等属性的href。所以我的代码如下所示:

index.html

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <link rel="stylesheet" type="text/css" href="css/index.css">
    <link rel="stylesheet" type="text/css" href="css/jquery.mobile.structure-1.4.5.min.css">

    <script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="js/jquery.mobile-1.4.5.min.js"></script>
    <script type="text/javascript" src="cordova.js"></script>
    <title>Hello World</title>
    </head>
    <body>
        <div data-role="page" id="page1">
          This is page 1<br />
          <br />
          <a href="#page2" data-transition="slide">
            Go to page 2
          </a>
        </div>

        <div data-role="page" id="page2">
          This is page 2<br />
          <br />
          <a href="#" data-rel="back" data-transition="reverse">
            Go back to page 1
          </a>
        </div>
    </body>
</html>

后退按钮在 iOS 9 和 iOS 9.0.1 中不起作用。在 iOS 8.3 中一切正常。那么关于这个问题有什么已知的吗?有人听说过吗?还是我完全错了,做错了什么?由于我无法在 android 上对其进行测试,如果有人能做到这一点,那就太好了。

http://codepen.io/anon/pen/vNyrgB

现在等待您的反馈...提前致谢!

【问题讨论】:

标签: javascript jquery ios cordova webkit


【解决方案1】:

目前有很多问题,但如果是关于后退按钮导航和页面闪烁,修复很简单:

$.mobile.hashListeningEnabled=false;

将其放在您的设备就绪事件中。

考虑到这会破坏 Android 后退按钮,因此您实际上应该仅在您的应用也应该在 Android 上运行时有条件地应用此按钮。比如:

if ( device.platform === "iOS" ) {
  $.mobile.hashListeningEnabled=false;
}

【讨论】:

    【解决方案2】:

    1) iOS9 在很多地方都被破坏了。 2) 此外,周末Phonegap Build 对默认版本进行了未经宣布的升级。

    这是你需要知道的,但还有更多我在这里没有的。

    1。现在支持 iOS9。

    截至 2015 年 11 月 2 日,Cordova 支持 iOS 9

    Apache Cordova iOS 3.9.2
    http://cordova.apache.org/announcements/2015/11/02/cordova-ios-3-9-2.html

    ## 1. 还不支持iOS9! ##

    PhoneGap Build iOS 9 支持状态

    此时,向 Cordova Bug 存储库报告了 4 个错误。您的问题未出现在存储库中 - 截至此日期。

    2。没有设置编译器版本

    来自 Phonegap Build 论坛,Petra Adds

    我要补充一点:没有公告,PGB 将默认 PGB 版本从 3.7.0 更改为 cli-5.2.0。这导致所有未在 config.xml 中设置 'phonegap-version' 的人都面临突然需要启动画面和白名单插件以及 config 和 html 中的额外白名单规范。

    此外,一些插件似乎无法使用 cli-5.2.0 正确构建,从而导致有关“Class ***.java”的日志文件错误消息。

    FWIW:Phonegap Build admitted to as much in this tweet

    来自Top Mistakes by Developers new to Cordova/Phonegap,您已点击:

    • #6 没有为你的编译器设置“phonegap 版本”
    • #7 没有为你的插件设置“版本”
    • #10 不在 config.xml 中添加新的“白名单”和“白名单插件”参数。

    #6 & #7

    使用 CLI 版本,如果您没有为您的平台或“Phonegap Build”分配版本,如果您没有在 config.xml 中设置 phonegap-version,您将获得最新版本。如果幸运的话,您的程序会按预期运行。如果你不走运,你会得到一组级联错误。

    幸运的是,Holly Schinsky 写了一篇很好的博文来解释这一切:

    Cordova/PhoneGap 版本混乱
    http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/

    #10

    这个相对 * 新 * 要求意味着——要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用的是 cordova-android@4.0.0 或更高版本,此要求将生效;包括 cli-5.1.1。但是,如果您的版本是 4.0.0 之前的版本,比如说 3.5.0 或 3.7.0,那么您将不必添加 白名单 要求。

    需要明确的是,“白名单”已经存在了一段时间,但插件和要求是非常新的。如您所料,当添加“白名单”时,事实上的开放访问功能已被弃用。或者换一种说法,事实上的开放访问功能是计划和计划取消的。这一变化标志着在移除开放获取功能方面迈出了一步。

    此外,内容安全政策 (CSP) 吸引了众多开发人员 - 因为它的宣传太差了。该 CSP 需要进入您使用的每个 HTML 页面,就像您必须等待“设备就绪”一样。该文档隐藏在许多最新文档页面的底部。

    相关链接

    Phonegap 构建论坛:Notes for upgrading to cli-5.1.1 on PGB 现在需要白名单

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2014-06-10
      • 2013-04-25
      • 2016-07-04
      • 1970-01-01
      相关资源
      最近更新 更多