Swift中与WebView的交互

embedded/2024/11/14 12:41:25/

在Swift中,可以使用WKWebView来实现与WebView的交互。WKWebView是iOS 8及以后版本中新增的Web视图控件,它提供了一种现代化的方式来加载和显示Web内容,并且支持与JavaScript的交互

以下是一些常见的与WebView的交互方式:

1.加载URL:可以使用WKWebView的load(_ request: URLRequest)方法来加载一个URL。例如:

swift">let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
if let url = URL(string: "https://www.example.com") {let request = URLRequest(url: url)webView.load(request)
}

2.在WebView中执行JavaScript代码:可以使用WKWebView的evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Void)?)方法来执行JavaScript代码,并且可以通过completionHandler获取执行结果。例如:

swift">let javaScript = "alert('Hello, world!');"
webView.evaluateJavaScript(javaScript) { (result, error) inif let error = error {print("JavaScript evaluation error: \(error.localizedDescription)")} else {print("JavaScript execution result: \(result)")}
}

3.通过WKScriptMessageHandler与JavaScript进行交互:可以通过实现WKScriptMessageHandler协议来监听WebView中的JavaScript事件,并通过WKUserContentController的add(_ scriptMessageHandler: WKScriptMessageHandler, name: String)方法来注册消息处理器。例如:

swift">class MessageHandler: NSObject, WKScriptMessageHandler {func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {if message.name == "myMessage" {if let body = message.body as? [String: Any] {// 处理消息}}}
}let messageHandler = MessageHandler()
webView.configuration.userContentController.add(messageHandler, name: "myMessage")

在JavaScript中,可以使用window.webkit.messageHandlers.myMessage.postMessage(body)来向Swift发送消息。其中,myMessage是注册的消息名称,body是要发送的消息内容。

以上是一些常见的与WebView的交互方式,你可以根据具体需求选择适合的方式来实现。


http://www.ppmy.cn/embedded/11416.html

相关文章

React 19 带来了 JSX 运行时的重要更新

在 React 的发展历程中,JSX 运行时一直扮演着重要的角色。在以前的的版本,JSX 运行时会克隆传入的 props 对象,这背后有着两大原因。 历史原因 React 保留了一些特殊的 prop 名称,如 key 和在 React 19 之前的 ref。这些 prop 并…

ROM修改进阶教程------安卓7_____安卓13去除签名验证操作步骤解析

同类博文: 安卓玩机搞机技巧综合资源-----修改rom 制作rom 解包rom的一些问题解析【二十一】_qcn改区域锁-CSDN博客 安卓系列机型rom修改。如果你删减了系统相关的app。那么严重会导致开机系统卡米 定屏等问题。这类一般都是系统签名验证导致的。而破解签名验证一般都是修改…

FPGA在汽车领域的应用简谈

随着科技的不断进步,汽车行业也在不断演变,而FPGA(可编程逻辑门阵列)的引入给汽车领域带来了革命性的变化。FPGA作为一种灵活且高性能的“处理器”,已经在汽车行业找到了广泛的应用 目前随着新能源汽车的发展&#xff…

MODBUS

Modbus标准的定义是: 一主多从 主有寄存器 寄存器有四个存储区: 0区:输出线圈(Coils)存储区。它是可读可写的。这个区域用于存储可以写入或读出的布尔量,如IO口的电平高低、灯的开关状态等。 1区&#xff…

【VI/VIM】基本操作备忘录

简介 新建/打开文件 工作模式 常用命令 补全命令 命令模式输入:ctrl p 移动命令 文本选中 撤销、删除 复制粘贴 替换 缩排 查找 替换 插入 分屏 练习

CyclicBarrier(循环屏障)源码解读与使用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 什么是CyclicBarrier? 3. CyclicBarrier与CountDownL…

00_Qt概述以及如何创建一个QT新项目

Qt概述 1.Qt概述1.1 什么是Qt1.2 Qt的发展史1.3 支持的平台1.4 Qt版本1.5 Qt的下载与安装1.6 Qt的优点 2.QT新项目创建3.pro文件4.主函数5.代码命名规范和快捷键 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面…

OpenHarmony网络协议通信—kcp

kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径:./third_party/kcp 修改添加依赖的编译脚本 在/develo…