在WKWebView中注入JavaScript以获取所单击图像的src属性,可以通过以下步骤实现:
webView(_:decidePolicyFor:decisionHandler:)
中,拦截网页的点击事件。以下是一个示例代码:
import WebKit
class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let configuration = WKWebViewConfiguration()
webView = WKWebView(frame: view.bounds, configuration: configuration)
webView.navigationDelegate = self
webView.uiDelegate = self
view.addSubview(webView)
if let url = URL(string: "https://example.com") {
let request = URLRequest(url: url)
webView.load(request)
}
}
// 拦截网页的点击事件
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
// 获取点击的元素
let element = navigationAction.targetFrame?.request.url?.absoluteString
// 判断是否为图片
if let element = element, element.hasSuffix(".jpg") || element.hasSuffix(".png") {
// 注入JavaScript获取图片的src属性
let script = "var imgSrc = document.elementFromPoint(\(navigationAction.location.x), \(navigationAction.location.y)).src; imgSrc;"
webView.evaluateJavaScript(script) { (result, error) in
if let src = result as? String {
// 处理或展示获取到的src属性
print("点击的图片src属性为:\(src)")
}
}
}
}
decisionHandler(.allow)
}
}
这段代码创建了一个WKWebView对象,并加载了一个网页。在webView(_:decidePolicyFor:decisionHandler:)
方法中,拦截了网页的点击事件,并判断点击的元素是否为图片。如果是图片,则通过JavaScript注入的方式获取该图片的src属性,并将其传递给原生代码进行处理或展示。
对于这个问题,腾讯云没有特定的产品或服务与之直接相关。但是,腾讯云提供了一系列云计算产品和服务,如云服务器、云数据库、云存储等,可以帮助开发者构建和部署各种应用。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多信息。
领取专属 10元无门槛券
手把手带您无忧上云