我玩过 iOS 8 测试版,发现 Cordova/Phonegap 几乎坏掉了。
对我来说,现在主要是 InAppBrowser 没有出现。
你有什么经验?您有解决方案或解决方案的想法吗?
谢谢。
您可以在 index.html 中使用一些 Javascript 来解决这个问题(或安装 iOS 8 beta 2,这似乎已经解决了这个问题): https ://gist.github.com/EddyVerbruggen/cd02c73162180793513e#file-ios8-beta -phonegap-修复
// temp fix for iOS8 beta, add it after the reference to cordova.js
// You don't actually require it for ios 8 beta 5
if (navigator.userAgent === undefined) {
navigator.__defineGetter__('userAgent', function() {
return("Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit");
});
}
一个普通的cordova 示例应用程序(例如“cordova create test”)可以正常加载。
如果您添加任何cordova插件,您将在“iOSExec()”中遇到问题,请参阅“platform_www/cordova.js”:
bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD;
将其更改为:
bridgeMode = jsToNativeModes.IFRAME_NAV;
你可以再次使用插件。这将破坏与 iOS 5 的向后兼容性,但我怀疑你今天会发现有人在运行 iOS 5 和 cordova ......
如果您使用的是 fastclick.js 或backbone.js,您也必须进行一些小的修改。只需按照 Safari 网络检查器中的错误消息进行操作即可。
在早期的 iOS 8 Beta 中,Cordova/Phonegap 应用程序由于用户代理错误而被破坏,但根据iOS 8 Beta 发行说明(WebKit 部分),此错误已在 iOS 8 Beta 3 中正式修复。(实际上已经在iOS 8 测试版 2。)
很高兴看到 Apple 已经测试了 Cordova/Phonegap 应用程序并修复了这个问题。一开始就存在这个错误有点令人失望,但早期的测试版总是有很多问题。
将 XCode 更新到 Beta 2,它可以在没有任何修复的情况下工作(使用 cordova 3.5.0 测试)。
您需要在 iOS 开发中心下载新版本的 XCode,因为自动更新尚未提供 beta 版本。