当前位置: 首页 > 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))

http://www.xdnf.cn/news/30385.html

相关文章:

  • 【HDFS入门】HDFS性能调优实战:关键参数对吞吐量的影响深度解析
  • c++ 类的语法1
  • UI文件上传
  • 深入解析进程与线程:区别、联系及Java实现
  • 设计模式-桥接模式
  • 14.解码器的Mask
  • End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
  • 从GET到POST:HTTP请求的攻防实战与CTF挑战解析
  • EF Core中动态加载关联的导航属性
  • 直线轴承的正确安装方式是什么?
  • LeetCode 热题 100_乘积最大子数组(88_152_中等_C++)(动态规划)
  • 虚拟现实(VR)技术在教育领域的创新应用
  • QML中的3D功能--入门开发
  • Chat2DB创始人姬朋飞:AI在 text2sql应用领域的实践
  • Java从入门到“放弃”(精通)之旅——数组的定义与使用⑥
  • 进程程序替换
  • 【橘子大模型】初探rag知识库的构建
  • Linux基础IO(八)之硬链接
  • 完整游戏排行榜系统实现
  • Redux Promise 中间件
  • C++ 数组 array ™实现动画效果全解析⚡YQW · Studio ⚡
  • Http基础
  • QML中的3D功能--自定义着色器开发
  • 硬件操作指南——ATK-MD0430 V20
  • 什么是超类实体和派生属性
  • JavaScript 变量语法扩展
  • C 语言联合与枚举:自定义类型的核心解析
  • Scade 语言词法介绍
  • 游戏引擎学习第235天:在 Windows 上初始化 OpenGL
  • 4N60-ASEMI开关电源与适配器专用4N60