gpt4 book ai didi

javascript - Cordova - window.history.back() 不适用于 iOS 9 中的 HTML 后退按钮

转载 作者:太空狗 更新时间:2023-10-29 14:44:43 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 window.history.back 导航回上一个 View

后退按钮声明

 <div class="back_icon"  id="verification_back_icon"><a href="#" data-rel="back"  data-transition="slidedown"><img src="images/back_btn.png" width="23"/></a></div>

按钮操作:

$( "#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 native 平台版本 3.8.0

如果有人遇到类似问题,请建议我。我试过 history.back doesn't work on iOS using Cordova , 但没有运气

谢谢。

最佳答案

问题是 window.location.hash 的设置在 iOS 9.0 UIWebview(由 Cordova/Phonegap 使用)中是异步的 - 参见 this bug report了解详情。

这会在使用默认使用 window.location.hash 在“页面”之间导航的 jQuery Mobile 时导致问题。它还会导致使用此机制的弹出窗口/对话框/选择菜单出现问题。

您可以通过阻止 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。WKWebView 由 iOS 8+ 上的 Safari 使用,因此在 iOS 9 上的浏览​​器中查看 JQM 站点不会遇到这些问题。由于 a bug,cordova-ios 3 仍然使用 UIWebView在 iOS 8 的 WKWebView 中,但即将推出的 cordova-ios 4 will support一个WKWebView core plugin适用于 iOS 9+。请注意,由于其更严格的安全性,将 WKWebView 与 Cordova/Phonegap 应用程序一起使用时还有其他注意事项,例如在 XHR 响应中需要 CORS header 。

关于javascript - Cordova - window.history.back() 不适用于 iOS 9 中的 HTML 后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com