首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WKWebView on link单击listener?

基础概念

WKWebView 是苹果公司提供的一个用于在 iOS 和 macOS 应用程序中显示网页内容的视图组件。它基于 WebKit 引擎,提供了高效的网页渲染能力。WKWebView 支持各种网页交互功能,包括链接点击、表单提交等。

相关优势

  1. 高效渲染:基于 WebKit 引擎,能够高效地渲染网页内容。
  2. 低内存占用:相比其他网页视图组件,WKWebView 在处理复杂网页时内存占用较低。
  3. 支持 JavaScript:能够与网页中的 JavaScript 进行交互。
  4. 安全性:提供了沙盒机制,限制网页对系统资源的访问。

类型

WKWebView 主要有以下几种类型:

  • WKWebViewConfiguration:用于配置 WKWebView 的设置。
  • WKNavigationDelegate:用于处理网页导航相关的事件。
  • WKUIDelegate:用于处理网页 UI 相关的事件。

应用场景

WKWebView 广泛应用于以下场景:

  • 混合开发:将网页内容嵌入到原生应用中。
  • 在线文档:显示在线文档或 PDF 文件。
  • 网页浏览器:开发自定义的网页浏览器。

链接单击监听器

要在 WKWebView 中监听链接点击事件,可以通过实现 WKNavigationDelegate 协议中的 webView(_:decidePolicyFor:decisionHandler:) 方法来实现。

示例代码

代码语言:txt
复制
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView = WKWebView(frame: self.view.frame)
        webView.navigationDelegate = self
        self.view.addSubview(webView)
        
        if let url = URL(string: "https://www.example.com") {
            webView.load(URLRequest(url: url))
        }
    }
    
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if let url = navigationAction.request.url {
            // 处理链接点击事件
            print("Clicked URL: \(url)")
            
            // 决定是否允许导航
            decisionHandler(.allow)
        } else {
            decisionHandler(.cancel)
        }
    }
}

参考链接

常见问题及解决方法

问题:为什么无法监听到链接点击事件?

原因

  1. 未设置 navigationDelegate:确保 WKWebViewnavigationDelegate 已经正确设置。
  2. 代理方法未实现:确保实现了 webView(_:decidePolicyFor:decisionHandler:) 方法。

解决方法

  1. 确保在 viewDidLoad 方法中设置了 navigationDelegate
  2. 确保在 viewDidLoad 方法中设置了 navigationDelegate
  3. 确保实现了 webView(_:decidePolicyFor:decisionHandler:) 方法:
  4. 确保实现了 webView(_:decidePolicyFor:decisionHandler:) 方法:

通过以上步骤,你应该能够成功监听到 WKWebView 中的链接点击事件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Hybrid】288- Hybrid App 应用开发中 9 个必备知识点复习

    WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...WKWebView 白屏问题 WKWebView 实际上是个多进程组件,这也是它加载速度更快,内存暂用更低的原因。...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.3K20

    Hybrid App 应用开发中 9 个必备知识点复习

    WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势...; WKWebView 支持了更多的 HTML5 特性; WKWebView 高效的 app 和 web 信息交换通道; WKWebView 允许 JavaScript 的 Nitro 库加载并使用,...UIWebView 中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.7K20

    iOS 创建 Universal Links【修订】

    前言 When you support universal links, iOS users can tap a link to your website and get seamlessly redirected...archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html 在wap中唤起app最广泛使用的方式并不是Universal Link...例子:为了解决苹果强制要求跨域才生效的问题,Universal Link就不能配置在主域名下,于是知乎才会准备一个oia.zhihu.com域名,专为Universal Link使用, 2.2 多业务线共用同一个...也就是说,让新的apple-app-association生效的方式是可以将App再发一个版本 III、iOS防止在WKWebView中打开Universal Link Prevent universal...links from opening in WKWebView iOS防止在WKWebView中打开Universal Link ———————————————— 版权声明:本文为CSDN博主「#公众号

    87340

    Hybrid App 应用开发中 9 个必备知识点复习

    WKWebView 与 UIWebView 的区别: WKWebView 的内存远远没有 UIWebView 的开销大,而且没有缓存; WKWebView 拥有高达 60FPS 滚动刷新率及内置手势;...中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...WKWebView 白屏问题 WKWebView 实际上是个多进程组件,这也是它加载速度更快,内存暂用更低的原因。...为了避免每次调试时看到此警告,勾选“总是允许从这台计算机”,并单击“确定”。...1.4电脑端远程 DebugGap 将检测即将到来的客户端,开发人员可以单击每个客户端进行调试。 六、在 iOS 平台下如何调试 WebView?

    2.3K30

    Android之按钮点击事件(单击、双击、长按等)

    在布局文件中添加按钮点击事件 在java文件中添加按钮点击事件 为多个按钮添加点击事件 按钮按下、释放事件 按钮长按事件 按钮长按时过滤掉单击事件 按钮双击事件 按钮双击时过滤掉单击事件 在布局文件中添加按钮点击事件...如果只需要处理长按事件的话则不需考虑这一点,如果要在同一个按钮单击或长按时处理不同的内容,则需在长按时过滤掉单击事件。...,因为按钮双击时仍然会先触发单击事件。如果只需要处理双击事件的话则不需考虑这一点,如果要在同一个按钮单击或双击时处理不同的内容,则需在双击时过滤掉单击事件。...按钮双击时过滤掉单击事件 双击时过滤单击事件的思路可参考以前在Qt中的应用(QML之MouseArea双击时过滤掉单击事件):在按钮点击时开启定时器,判断300ms内有没有第二次点击,有的话表示双击,...没有的话表示单击

    2.1K20

    http:blog.csdn.netu010105969articledetails53541088

    本文链接:https://blog.csdn.net/u010105969/article/details/101682356 iOS开发中的WKWebView与JS的交互 之前已经写过一个篇OC与JS...(博客地址:http://blog.csdn.net/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView...如果点击第四个conform按钮会调用方法: // 确认框 (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。...插入链接与图片 链接: link. 图片: ? 带尺寸的图片: ? 居中的图片: ? 居中并且带尺寸的图片: ? 当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    1.6K30

    WKWebView详解

    WKWebView主要涉及到以下类或协议,各部分可能互相依赖,文章按照apple文档的划分对每一个模块进行了详细的解释 WKWebView 配置和偏好 WKWebViewConfiguration WKPreferences...一个WKWebView对象显示交互式的web内容,比如在应用程序内的浏览器。...您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...WebView用户界面通过实现这个协议来控制新窗口的打开,增强用户单击元素时显示的默认菜单项的表现,并执行其他用户界面相关的任务。这些方法可以通过处理JavaScript或其他插件内容来调用。...创建一个新的WebView - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration

    20.5K193
    领券