jQuery / Cordova历史问题- iOS 9的历史被打破
jQuery / Cordova history issue - iOS 9 history broken?
我正在做一个应用程序。上周开始之后,我又加了几页。今天我试图实现后退按钮,我失去了我的头…四个小时了,我试着让它工作,但我不能,因为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
# 10使用CLI版本,如果您没有为您的平台或在"Phonegap构建"中分配版本,如果您没有在config.xml中设置Phonegap -version,您将获得最新版本。如果幸运的话,您的程序就会像预期的那样工作。如果您不够幸运,您将得到一组级联错误。
幸运的是,Holly Schinsky写了一篇很好的博客来解释这一切:
Cordova/PhoneGap版本混淆
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/
这个相对* 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构建白名单指南
- window.location替换并传递URL历史记录条目中的变量
- Javascript历史记录转换为php行
- cordova-2.0.0.js不适用于使用phonegap的android
- ReferenceError: cordova is not defined @ng-cordova.min.js:7
- 浏览器何时记录历史记录
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 在cordova android应用程序中连接数据库
- Cordova RSS馈送的链接不会在外部浏览器中打开
- 使用filetransfer/cordova插件上传一些文件
- Cordova ng路线工作不正常
- 流路由器流星的历史
- 无法在基于Cordova的应用程序中读取Set Cookie标头
- 如何使用Node.js脚本从Rally获取用户的修订历史
- 如何将tesseract OCR与Cordova/Phonegap应用程序集成
- 无法在Cordova 4.0 ios中将jpg/jpeg图像转换为Base64
- 使用Tabris-js,并尝试使用cordova文件和文件传输插件
- 输入类型按钮返回历史记录并返回顶部
- jQuery / Cordova历史问题- iOS 9的历史被打破
- 窗户的问题.在IOS9的Cordova应用上使用JQuery/Javascript的历史
- 隐藏inAppBrowser插件Cordova 3+中的历史按钮