[英]jQuery / Cordova history issue - iOS 9 history broken?
我只是在處理一個應用程序。 上周開始后,我添加了幾頁。 今天我試圖實現后退按鈕,但我失去了理智......現在我試圖讓它工作四個小時,但我無法做到,因為 iOS 9 中有一些奇怪的行為。
所以我的硬件設置以便更好地理解:
我的應用程序設置以便更好地理解:
所以我想通過 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對默認版本進行了一次突擊升級。
這是你需要知道的,但還有更多我在這里沒有的。
截至 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 錯誤存儲庫。您的問題未出現在存儲庫中 - 截至此日期。
1 個錯誤 - https://openradar.appspot.com/22186109
無論如何,無論您使用什么,正如論壇帖子所述,直到 Cordova-iOS 4.0.0 才正式支持 iOS 9。 這意味着,創建一個變通方法,或者等到它得到官方支持。 或使用cordova 提交錯誤報告。 或者等到其他人創建一個變通方法。
有時,Phonegap 在論壇而不是博客上發布公告。
更多信息:( 官方)來自Phonegap Build 技術支持論壇的消息
從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 和 #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.