jQuery / Cordova历史问题- iOS 9的历史被打破

jQuery / Cordova history issue - iOS 9 history broken?

本文关键字:历史 Cordova 问题 jQuery iOS      更新时间:2023-09-26

我正在做一个应用程序。上周开始之后,我又加了几页。今天我试图实现后退按钮,我失去了我的头…四个小时了,我试着让它工作,但我不能,因为iOS 9有一些奇怪的行为。

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

  • Mac Mini - OS X - Yosemite 10.10.5
  • iPhone 6 s - iOS 9.0.1 (13 a405)
  • iPhone 6+ - iOS 9.0 BETA (13A4305g)
  • iPhone 5 -
  • iOS 9.0 (13 a344)
  • iPad 4 - iOS 8.3 (12F69)

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

  • Cordova at version 5.3.3
  • Cordova平台iOS 3.9.1版本
  • jQuery在2.1.4jQuery mobile 1.4.5 miniated

所以我想通过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

现在等待您的反馈…提前感谢!

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

$.mobile.hashListeningEnabled=false;

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

考虑到这破坏了Android的后退按钮,所以你应该只有在你的应用程序也应该在Android上运行时才有条件地应用它。比如:

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

1) iOS9在很多地方都坏了。 2)此外,上周末Phonegap Build对默认构建进行了未宣布的升级。

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

1。现在支持iOS9了

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

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支持状态

  • 2015年9月23日
  • http://community.phonegap.com/nitobi/topics/phonegap-build-ios-9-support-status
  • 在Cordova-iOS 4.0.0之前,iOS 9是而不是正式支持的,Cordova团队正在努力工作。然而,一些问题可以通过一些简单的配置更改来解决。

在这个时间点上,有4个Bug报告给Cordova Bug存储库。到目前为止,您的问题未出现在责任目录中。

  • 4个bug - https://issues.apache.org/jira/browse/CB-9684?jql=text%20~%20%22iOS9%22
  • 1 bug - https://openradar.appspot.com/22186109

    不管你用的是什么,正如论坛帖子所说,iOS 9直到Cordova-iOS 4.0.0才正式支持。这意味着,创建一个替代方案,或者等待它得到官方支持。或者用cordova提交一个bug报告。或者等待,直到其他人创建了一个工作。

    有时Phonegap在论坛而不是博客上发布公告。
    更多信息:(官方)论坛中来自Phonegap Build技术支持的消息

2。未设置编译器版本

来自Phonegap Build论坛,Petra补充道:

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

另外,一些插件似乎不能正确地在cli-5.2.0中构建,导致日志文件错误提示"Class ***.java"。

FWIW: Phonegap Build在这条推文中承认了这一点

新开发Cordova/Phonegap的开发者最容易犯的错误:

  • #10 未在config.xml中添加新的"白名单"answers"白名单插件"参数

For #6 &# 7

使用CLI版本,如果您没有为您的平台或在"Phonegap构建"中分配版本,如果您没有在config.xml中设置Phonegap -version,您将获得最新版本。如果幸运的话,您的程序就会像预期的那样工作。如果您不够幸运,您将得到一组级联错误。

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

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

# 10

这个相对* NEW *的要求意味着& & &;要访问任何网站或资源,你必须使用白名单和白名单插件。如果您使用cordova-android@4.0.0或更好的版本,则此要求将生效;包括cli-5.1.1。然而,如果你的版本在4.0.0之前,让我们说3.5.0或3.7.0,那么你将不需要添加白名单要求。

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

此外,内容安全策略(CSP)已经抓住了许多开发人员——因为它宣传得太差了。这个CSP需要进入你使用的每一个HTML页面,就像你必须等待"devicready"一样。该文档隐藏在许多最新文档页面的底部。

相关链接

Phonegap构建论坛:PGB升级到cli-5.1.1的注意事项,现在需要白名单

  • Cordova白名单指南
  • Phonegap白名单指南
  • Phonegap构建白名单指南