直接上代码:(下面的代码是截获web中某个按钮的点击事件)
/*.h文件*/
#import <UIKit/UIKit.h>
#import <JavaScriptCore/JavaScriptCore.h>
@interface BusinessWebViewController : UIViewController
@property(nonatomic,copy)NSString * HttpStr;
@property(nonatomic,strong)UIWebView * webView;
@property (nonatomic, strong) JSContext *jsContext;//JS方法
- (void)convertJSFunctionsToOCMethods;
@end
/*.m文件*/
#import "BusinessWebViewController.h"
@interface BusinessWebViewController ()<UIWebViewDelegate>
@end
@implementation BusinessWebViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)viewDidLoad {
[super viewDidLoad];
NSString * urlStr = self.HttpStr;
self.webView =[[UIWebView alloc] initWithFrame:CGRectMake(0,20, PhoneWidth, PhoneHeight-20)];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]];
self.webView.scalesPageToFit = YES;
self.webView.delegate = self;
[self.view addSubview:self.webView];
}
- (void)updateMessageForArticls{
}
/// 是否允许加载网页,也可获取js要打开的url,通过截取此url可与js交互
//实现代理
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *urlString = [[request URL] absoluteString];
urlString = [urlString stringByRemovingPercentEncoding];
return YES;
}
/// 开始加载网页
- (void)webViewDidStartLoad:(UIWebView *)webView {
}
/// 网页加载完成
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[MBProgressHUD hideHUDForView:self.view];
/*
* ♥️JS交互代码
*/
[self convertJSFunctionsToOCMethods];
}
/// 网页加载错误
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
}
- (void)convertJSFunctionsToOCMethods{
__weak typeof(self) weakSelf = self;
//获取JS上下文
self.jsContext = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//带参数
//1.share --是移动端与web端约定的方法名 2.^(JSValue * data,JSValue * data2):这是方法参数
self.jsContext[@"share"] = ^(JSValue * data,JSValue * data2){
NSString * dataStr = [data toObject];
NSString * dataStr2 = [data2 toObject];
/*******
你需要做的操作
*********/
};
//无参数
self.jsContext[@"tback"] =^(){
/*******
你需要做的操作
*********/
}
@end