在我的应用程序中,我使用window.history.back导航回上一个View
后退按钮声明
按钮动作:
$("#verification_back_icon").on("click",function(e)
{
if(checkDirtyVacation())
{
e.preventDefault();
if(backbtnAlt== false)
{
backbtnAlt =true;
confirm("All data will be lost. Do you want to continue?",function(r){
if(r){
//onBackKeyDown();
clearVacationvalues();
window.history.back();//this is not working in iOS 9
}else{
}
backbtnAlt =false;
});
}
}
else
{
e.preventDefault();
if($(".vaction_location").hasClass("chkSelect"))
{
$(".vaction_location").removeClass("chkSelect");
$(".vaction_location").addClass("chkUnSelect");
}
window.history.back();
}
});
这完美地工作到iOS 8.4.在iOS 9中,此导航无效.
我使用的是Apache Cordova本机平台版本3.8.0.
如果有人遇到类似的问题请建议我.
我试过history.back doesn’t work on iOS using Cordova,但没有运气
谢谢.
最佳答案
问题是window.location.hash的设置在iOS 9.0 UIWebview中是异步的(由Cordova / Phonegap使用) – 有关详细信息,请参阅this bug report.
这会导致使用jQuery Mobile时出现问题,默认情况下使用window.location.hash在“pages”之间导航.它还会导致使用此机制的弹出窗口/对话框/选择菜单出现问题.
您可以通过阻止jQuery Mobile自动侦听/使用location.hash来解决此问题:
$(document).on("deviceready",function(){
$.mobile.hashListeningEnabled = false;
});
但是,我发现这对Android有副作用,例如导致硬件返回按钮无法工作,因此我使用cordova-plugin-device专门针对iOS 9进行了定位:
$(document).on("deviceready",function(){
if(device.platform === "iOS" && parseInt(device.version) === 9){
$.mobile.hashListeningEnabled = false;
}
});
请注意,我使用navigator.app.backHistory()而不是window.history.back()与hashListeningEnabled = false – 这可能会有所不同.
或者,你可以使用this plugin在iOS 8和9上使用新的WKWebView.在iOS 8上,Safari使用WKWebView,因此在iOS 9浏览器中查看的JQM站点不会遇到这些问题. cordova-ios 3仍然使用UIWebView,因为a bug在iOS 8中的WKWebView中,但即将推出的适用于iOS 9的cordova-ios 4 will support a WKWebView core plugin.请注意,将WKWebView与Cordova / Phonegap应用程序一起使用时还有其他注意事项,因为它具有更严格的安全性,例如在XHR响应中需要CORS标头.
原文链接:https://www.f2er.com/html/426070.html