当前位置: 首页 > news >正文

在swiftui项目中使用WKWebView加载自定义脚本文件

1.确保你的 custom.js 文件已添加到项目目标中(在文件检查器中勾选目标成员资格)

2.对于复杂的 JavaScript 交互,可能需要使用 WKUserContentController 和 WKScriptMessageHandler

3.考虑 Web 内容加载时间,脚本注入应在页面加载完成后进行(如示例中的 didFinish navigation 回调)

4。如果需要与 Swift 代码通信,可以使用 evaluateJavaScript(_:completionHandler:) 方法

先添加js文件到项目中:

按照提示添加后,项目中就会显示你添加的文件:

然后再使用自定义一个加载文件逻辑:


extension WebView {static func loadJSFile(named filename: String) -> String? {guard let path = Bundle.main.path(forResource: filename, ofType: "js") else {print("Could not find \(filename).js in bundle")return nil}do {let jsString = try String(contentsOfFile: path, encoding: .utf8)return jsString} catch {print("Error loading \(filename).js: \(error)")return nil}}
}

 最后添加:

        // 2. 加载并注入自定义脚本if let customScript = WebView.loadJSFile(named: "custom") {let userScript = WKUserScript(source: customScript,injectionTime: .atDocumentStart,forMainFrameOnly: false)webView.configuration.userContentController.addUserScript(userScript)}// 3.load urlwebView.load(URLRequest(url: url))

相关文章:

  • WebSocket介绍
  • 深入剖析JavaScript内存泄漏:识别、定位与实战解决
  • LeetCode 解题思路 42(Hot 100)
  • JMeter实现UI自动化测试的完整方案
  • stack,queue和priority_queue
  • Java @Serial 注解深度解析
  • MATLAB 控制系统设计与仿真 - 39
  • JDBC 数据库连接全解析:从驱动配置到工具类封装
  • 《JVM考古现场(二十三):归零者·重启奇点的终极奥义》
  • 若依(笔记)
  • React-请勿在循环或者条件语句中使用hooks
  • 触发器(详解)
  • LNA设计
  • linux学习 5 正则表达式及通配符
  • .net core web api 数据验证(DataAnnotations)
  • Python concurrent包介绍
  • 19-算法打卡-哈希表-四数相加II-leetcode(454)-第十九天
  • leetcode哈希表(六)-三数相加
  • C++ 数学算法全解析(二):解方程与三角函数实用指南
  • deekseak 本地windows 10 部署步骤
  • 秦洪看盘|热点凌乱难抑多头雄心
  • 高架上2名儿童从轿车天窗探出身来,驾驶员被记3分罚200元
  • 美方因涉港问题对中国官员滥施非法单边制裁,外交部:强烈谴责,对等反制
  • 菲律宾群岛地区发生5.6级地震,震源深度20千米
  • 四川省委统战部副部长(正厅级)张荣履新峨眉电影集团“一把手”
  • 观察|美军在菲律宾部署新导弹,试图继续构建“导弹链”