首页 > 其他分享 >WKWebView 注入JS代码

WKWebView 注入JS代码

时间:2022-09-23 21:22:47浏览次数:59  
标签:alloc 代码 js NSString webView JS WKWebView 注入

  1. 初始化时进行注入
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
	  //实际上注入js文件和注入js代码字符串没有区别,因为也要把JS文件读取为字符串进行调用
    NSString *js = [[NSBundle mainBundle] pathForResource:@"demo/canvas.js" ofType:nil];
    NSData *jsData=[NSData dataWithContentsOfFile:js];
    NSString *jsString =  [[NSString alloc] initWithData:jsData encoding:NSUTF8StringEncoding];
    WKUserScript *jsScript = [[WKUserScript alloc]initWithSource:jsString injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
 [config.userContentController addUserScript:jsScript];
 _webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];

  1. 页面加载完毕进行注入(当然也可以使用初始化时注入,injectionTime改为WKUserScriptInjectionTimeAtDocumentEnd),一般是先在start时注入,end时进行调用
//便利宏: 避免书写大量的反斜杠转义或者换行
#define JS(...)  [[NSString alloc] initWithCString:#__VA_ARGS__ encoding:NSUTF8StringEncoding]

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
    self.title = webView.title;
    //注入js
    [webView evaluateJavaScript:JS(
       alert('你好,JS');
      console.log('hello JS');
    ) completionHandler:nil];
}

标签:alloc,代码,js,NSString,webView,JS,WKWebView,注入
From: https://www.cnblogs.com/wgb1234/p/16724396.html

相关文章

  • 响应式布局— rem介绍、媒体查询介绍、rem和媒体查询结合的布局、flexible.js 的使用
    媒体查询媒体查询MediaQueries,是一种可以根据不同的设备为其实现不同的样式的技术。在CSS3引入了媒体查询,使用媒体查询,你可以针对不同的媒体类型定义不同的样式,还可以......
  • git提交公司代码
    git生成的keylinux:/root/.sshWindowd:/c/Users/FDHG/.ssh --->FDHG用户1.gitconfig--globaluser.name"名字"2.gitconfig--globaluser.email"邮箱"3.ssh......
  • Python json中dumps与dump及loads与load的区别
    Python中dumps与dump及loads与load的区别这篇文章主要介绍了Python中dumps与dump、loads与load的区别,json模块提供了一种很简单的方式来编码和解码JSON数据。其中两个主要......
  • 低 / 无代码行业 2025 年或迎来市场井喷,云表平台有望 “弯道超车”
        近日,专注于人工智能、大数据等前瞻性科技研究的专业平台亿欧发布了一份《2022低代码行业应用研究报告》。报告显示,低代码行业未来将保持高速增长,预计于2025年达......
  • NodeJs——Parsing error: Cannot read file '.../tsconfig.json'.eslint
    前言之前没有问题,今天打开项目后,ts文件中的import突然报Parsingerror:Cannotreadfile'.../tsconfig.json'.eslint,查了下stackoverflow内容以下为大家给出的一些......
  • 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件
    在之前的文章中,我们为大家分别详细介绍了在JavaScript、React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的“三部曲”,本文我们将为大家介绍该问题在A......
  • BiLSTM介绍及代码实现
    BiLSTM介绍及代码实现一、介绍1.1文章组织本文简要介绍了BiLSTM的基本原理,并以句子级情感分类任务为例介绍为什么需要使用LSTM或BiLSTM进行建模。在文章的最后,我们给......
  • JS基础
    Javascipt基础一、输出语句alert('这是我的第一行js代码');控制浏览器弹出一个警告框document.write('我是body中的内容');可以向body中输入一个内容console.log('开......
  • JS 闭包&防抖&节流
    一、函数防抖防抖 防抖、节流使用的闭包,一个页面调用多次防抖节流,独立空间  防抖概念: 用户触发事件过于频繁,只需要处理最后一次事件的操作functiondebounce(......
  • C#中使用Invoke和BeginInvoke跨线程更新UI控件示例代码
    在多线程开发过程中,有时候需要更新UI控件内容,但是在c#多线程Task、Thread、BackgroundWork中不能直接更新UI控件,否则会报调用线程不能访问此对象,因为它由另一个线程拥有The......