iOS wkwebview 捕捉本地html 跳转
要在iOS中使用WKWebView捕捉本地HTML跳转,你需要实现WKNavigationDelegate协议,并设置WKWebView的navigationDelegate属性为你的实现类的实例。
以下是一个示例代码:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// 创建WKWebView实例
webView = WKWebView(frame: view.bounds)
webView.navigationDelegate = self
view.addSubview(webView)
// 加载本地HTML文件
if let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") {
let htmlUrl = URL(fileURLWithPath: htmlPath)
webView.loadFileURL(htmlUrl, allowingReadAccessTo: htmlUrl)
}
}
// WKNavigationDelegate方法
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
// 检查是否是本地跳转
if let url = navigationAction.request.url, url.scheme == "file" {
// 捕捉本地跳转
print("捕捉到本地跳转:\(url)")
decisionHandler(.cancel) // 取消导航动作
} else {
decisionHandler(.allow) // 允许导航动作
}
}
}
在上面的示例中,我们创建了一个WKWebView实例并将其添加到视图中。然后,我们设置了WKWebView的navigationDelegate属性为当前视图控制器,并实现了WKNavigationDelegate协议的webView(_:decidePolicyFor:decisionHandler:)方法来捕捉本地跳转。
在webView(_:decidePolicyFor:decisionHandler:)方法中,我们检查导航动作的URL是否是本地文件URL(scheme为"file")。如果是本地跳转,我们可以执行自定义操作,比如打印URL并取消导航动作。如果不是本地跳转,我们允许导航动作继续进行。
请注意,上述示例假设你已经将名为"index.html"的HTML文件添加到了你的项目中,并正确设置了Bundle Identifier和文件的Target Membership。你可以根据自己的需求修改HTML文件名和路径
原文地址: https://www.cveoy.top/t/topic/ivIe 著作权归作者所有。请勿转载和采集!