问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

OC与JS交互-WKWebView篇

发布网友 发布时间:2023-02-08 14:52

我来回答

1个回答

热心网友 时间:2024-11-18 21:35

oc 跟 js 端协议好方法名 比如 js 的方法为 Back()

1.oc 对 js 的方法进行监听

[config.userContentController addScriptMessageHandler:self name:@"Back"];

2.oc 设置代理并且导入代理 

<WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler>

self.webView.UIDelegate = self;

self.webView.navigationDelegate = self;

3.实现代理

- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message;

4.离开页面的时候移除监听

[config.userContentController removeScriptMessageHandlerForName:@"Back"];

1.创建按钮 并且实现按钮的回调

<input type="button" value="返回按钮" onclick="backClick()" />

2.按钮的响应方法中添加发送消息到 OC (可以携带参数)

 functionbackClick() {window.webkit.messageHandlers.Back.postMessage('固定写的 js 值-->点击了返回');}

1.OC 添加对 JS 的消息监听,实现代理对监听的实现方法。

2.JS 端在合适的时机发送消息,并且可以携带参数。

js 跟 oc 端协议好方法名 比如 js 的方法为 transferPrama(str)

//oc 在合适的时机调用 js 方法(可以传参数)

NSString* paramString =@"我是 OC 调用 JS";

NSString* jsStr = [NSStringstringWithFormat:@"transferPrama('%@')",paramString];

 [self.webView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {NSLog(@"result=%@  error=%@",result, error);}];

//js需要定义一个对应的方法供 OC 调用

functiontransferPrama(str) {

document.getElementById("secondid").value = str;

}

- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message

- (void)evaluateJavaScript:(NSString*)javaScriptString completionHandler:(void(^_Nullable)(_Nullableid,NSError*_Nullableerror))completionHandler;

愤怒的牛牛的

愤怒的牛牛的新浪博客

愤怒的牛牛的GitHub
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 鸡生病了喂什么药好 症状 19000件!小米专利技术再创新高,模块化手机将重回主流 哪个牌子的三七粉最好 HD2 屏幕上面的那块玻璃摔坏了,扬州哪里可以维修? 江都有没有可以修液晶显示器的地方 请问明基笔记本电脑扬州维修站哪里有?联系电话是多少? 扬州明基显示器维修电话。(上门服务)。或维修中心。急。。。 扬州什么地方可以修显示器~ 2023上海公务员考试职位报名网址 一个银元宝值多少克 成人高考学位证有用吗?成人高考学位证申请流程是什么? 成人高考要不要申请学士学位?学位证有什么用途? 湖北成考本科学位证书有必要考吗?成人学位证书的作用是什么? 读成人本科有必要考学位证吗? 太平洋建设集团分红多少 新大洲电动车变速适应情况 卫生间可以同双面胶贴挂钩吗 为什么手机壁纸变成模糊的我的手机是联想4g的 联想s898t照片设置成壁纸很模糊 为什么我的联想S680换壁纸时,剪切出来的壁纸放大了,而且很模糊? WKWebView OC与JS交互 同步返回值 哪里可以考a3驾驶证 苹果12pro多久出的 怎么查考勤和工资 叮咚签到报表可以直接导出吗? 汪小菲爸爸汪玺有几个孩子 传奇封多倍攻击 传奇手游倍攻辅助器去哪里找 天战传奇黑暗光年如何双倍功速辅助 简单挂多倍攻击有用吗 百合馒头的制做方法 arctanx的图像是什么样的? 淘宝网那个公告在哪里改? 爱丽丝漫游仙境的翻译者是陆金吗 支付宝交西湖益联保和保险公司交西湖益联保有什么区别 和家长沟通的简短话术 家教沟通话术 问一下三星ua32es5500r电视机连上无线网络后优酷视频,电影,什么都看不... 促进区域协调发展就要加强城市基础设施建设打造什么城市 360手机助手原理