当前位置: 首页 > 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.dtcms.com/a/142954.html

相关文章:

  • 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 部署步骤
  • 网络编程 - 4 ( TCP )
  • RoBoflow数据集的介绍
  • 对美团leaf的初步学习
  • 深度解析 SOA:架构原理、核心优势与实践挑战
  • Firewalld防火墙
  • 基于Python Django 的全国房价大数据可视化系统(附源码,部署)
  • 使用docker在manjaro linux系统上运行windows和ubuntu
  • JDOM处理XML:Java程序员的“乐高积木2.0版“
  • Android 应用wifi direct连接通信实现
  • 第33讲|遥感大模型在地学分类中的初探与实战