簡體   English   中英

jQuery / Cordova 歷史問題 - iOS 9 歷史被破壞?

[英]jQuery / Cordova history issue - iOS 9 history broken?

我只是在處理一個應用程序。 上周開始后,我添加了幾頁。 今天我試圖實現后退按鈕,但我失去了理智......現在我試圖讓它工作四個小時,但我無法做到,因為 iOS 9 中有一些奇怪的行為。

所以我的硬件設置以便更好地理解:

  • Mac Mini - OS X -優勝美地 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)

我的應用程序設置以便更好地理解:

  • Cordova版本 5.3.3
  • Cordova 平台iOS 版本 3.9.1
  • jQuery 在2.1.4 縮小
  • jQuery 移動版1.4.5 縮小版

問題

所以我想通過 jQuery 在我的應用程序中實現一個后退按鈕。 通常的方法是添加一個帶有data-rel="back"data-transition="reverse"等屬性的href 所以我的代碼看起來像這樣:

索引.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 日,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 支持狀態

此時,有 4 個錯誤報告給 Cordova 錯誤存儲庫。 您的問題未出現在存儲庫中 - 截至此日期。

2. 未設置編譯器版本

Phonegap 構建論壇, 佩特拉補充說

我想補充一點:在沒有公告的情況下,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 新手開發者犯的主要錯誤中,您遇到了:

  • #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 頁面,就像你必須等待“deviceready”一樣。 該文檔隱藏在許多最新文檔頁面的底部。

相關鏈接

Phonegap 構建論壇: 在 PGB 上升級到 cli-5.1.1 的注意事項,現在需要白名單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM