- 1.1 UIWebView 监听H5页面goBack返回事件
- 1.2 WKWebView监听H5页面goBack返回事件
- 2.1 原理
- 2.2 例子
- 什么时候会触发这个返回事件?
- 截取当前显示在屏幕中的WKWebView
- UINavigationBarDelegate
- NavigationType
- Disable all the '_blank' target in page's target
- 在WKWebView的WKNavigationDelegate代理方法中处理应用跳转
- 简单的处理WKWebView加载新页面
- WKWebView显示JS弹框
- WKWebView调用js方法
- 监听 estimatedProgress
引言
需求:原生app使用WebView 控制器加载H5页面进行信用卡申请
问题:用户点击残忍放弃之后,没有关闭当前控制器
重现场景:用户点击返回按钮,暂时提示框:
真的不要?
解决方案:
1、iOS监听H5页面goBack返回事件 2、直接使用Safari打开URL
相关文章:
iOS 封装WebView 控制器https://kunnan.blog.csdn.net/article/details/114832679
I 、 iOS监听H5页面goBack返回事件
方式一:通过与JS的桥接,让h5主动通知你的
如果是采用
通过与JS的桥接,让h5主动通知你的
方案,请看这两篇文章 1、https://blog.csdn.net/z929118967/article/details/1081469552、https://kunnan.blog.csdn.net/article/details/114832679
方式二:注入和监听WebView相关的返回类型及方法
1、
UIWebViewNavigationTypeBackForward
2、canGoBack
:判断当前H5界面是否可以返回的方法 3、goBack
: 返回上一个界面 4、goForward:可以向前导航到back-forward列表中的内容,相当于回到关闭的之前看过的详情界面。 5、 _webView.allowsBackForwardNavigationGestures = YES;允许左滑右滑,默认值为NO;设置为YES后,即可实现左右滑手势操作后退前进
6、WKWebView的backForwardList
代码语言:javascript复制if (_webView.backForwardList.forwardList.count > 0) {
NSLog(@"forwardItem");
NSLog(@"title:%@", _webView.backForwardList.forwardItem.title);
NSLog(@"URL:%@", _webView.backForwardList.forwardItem.URL);//列表中条目的标题及url
}
代码语言:javascript复制7、goToBackForwardListItem:返回某个历史页面
/*! @abstract Navigates to an item from the back-forward list and sets it
as the current item.
@param item The item to which to navigate. Must be one of the items in the
web view's back-forward list.
@result A new navigation to the requested item, or nil if it is already
the current item or is not part of the web view's back-forward list.
@seealso backForwardList
*/
- (nullable WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item;
1.1 UIWebView 监听H5页面goBack返回事件
UIWebView,可通过UIWebViewNavigationTypeBackForward来监听返回事件
代码语言:javascript复制- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (navigationType==UIWebViewNavigationTypeBackForward) {
self.webView.canGoBack?[self.webView goBack]:[self.navigationController popViewControllerAnimated:YES];
}
return YES;
}
重写原生导航栏的pop事件处理
代码语言:javascript复制根据[self.webView canGoBack]来做处理
-(void)navigationBarItemBackImage{
UIImage *image=[UIImage imageNamed:@"navigationBack"];
if ([Tools systemVersion]>=7) {
image= [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithImage:image style:UIBarButtonItemStyleDone target:self action:@selector(goBackAction)];
}
-(void)goBackAction{
if (self.webView.canGoBack==YES) {
[self.webView goBack];
}else{
[self.navigationController popViewControllerAnimated:YES];
}
}