iOS - WKWebView与JS之间的交互

https://www.cnblogs.com/huaixu/p/5570100.html

 

https://www.cnblogs.com/qiyiyifan/p/12077700.html

 

1、webview去除原网址的广告或者标题

js语句

document.documentElement.getElementsByClassName('这里写你要消除的空间的class里面的字符串')[0].style.display = 'none'

具体用法:

- (void)webViewDidFinishLoad:(UIWebView *)webView{

[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.getElementsByClassName('adpic')[0].style.display = 'none'"];

}

2. 获得UIWebView的标题

- (void)webViewDidFinishLoad:(UIWebView *)webView{

NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];

}

3. 获取页面的URL

- (void)webViewDidFinishLoad:(UIWebView *)webView{

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

}

4. 修改页面元素的值

- (void)webViewDidFinishLoad:(UIWebView *)webView{

NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];

}

5. 表单提交

- (void)webViewDidFinishLoad:(UIWebView *)webView{

NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]
}
 
 
 

一、前言

  这个星期面临一个网页的需求,需要用到这方面的知识,很久没看过这方面的代码了,记录下吧。

  wkwebview的创建和使用就不再提及了,直接看与JS之间的交互吧。

二、内容

  1、JS调用OC

window.webkit.messageHandlers.<#对象名#>.postMessage(<#参数#>)

  

//进行配置控制器
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
//实例化对象
configuration.userContentController = [WKUserContentController new];
//调用JS方法
[configuration.userContentController addScriptMessageHandler:self name:@"actionEnd"];

 

复制代码
复制代码
#pragma mark - WKScriptMessageHandler

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"actionEnd"]) {
        NSDictionary *jsData = message.body;
        NSLog(@"%@", message.name, jsData);
    }
}
复制代码
复制代码

  注:对象名要和前端沟通好。前端JS能回传的类型只能是 NSNumber, NSString, NSDate, NSArray, NSDictionary, NSNull。

  2、OC调用JS

// 调用API方法
[self.weexWebView evaluateJavaScript:@“JS” completionHandler:^(id object, NSError * _Nullable error) {
    NSLog(@"obj:%@---error:%@", object, error);
}];
posted @   itlover2013  阅读(837)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2015-09-29 iOS 9: UIStackView入门
2015-09-29 iOS 9 学习系列:UIStack View
点击右上角即可分享
微信分享提示