jQuery/Cordova历史问题 - iOS 9历史崩溃了吗?

Sit*_*hys 2 javascript jquery webkit ios cordova

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

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

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

我的应用程序设置以便更好地理

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

问题

所以我想通过jQuery在我的应用程序中实现一个后退按钮.Normaly的方式是添加一个hrefdata-rel="back"和的属性data-transition="reverse".所以我的代码看起来像这样:

的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>
Run Code Online (Sandbox Code Playgroud)

后退按钮在iOS 9和iOS 9.0.1中不起作用.在iOS 8.3中一切正常.那么这个问题有什么已知的吗?有人听说过吗?或者我完全错了,做错了什么?由于我无法在Android上测试它,如果有人能做到这一点会很棒.

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

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

Tho*_*mas 6

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

$.mobile.hashListeningEnabled=false;
Run Code Online (Sandbox Code Playgroud)

将其置于您的设备就绪事件中.

考虑到这会打破Android后退按钮,所以当你的应用程序也应该在Android上运行时,你实际上应该只有条件地应用它.就像是:

if ( device.platform === "iOS" ) {
  $.mobile.hashListeningEnabled=false;
}
Run Code Online (Sandbox Code Playgroud)