gpt4 book ai didi

ios - 如何在 WebKit View 中获取点击元素的 Id?

转载 作者:行者123 更新时间:2023-11-28 14:01:35 27 4
gpt4 key购买 nike

我在 url 中加载了一个 UIWebKit,我想在单击时选择 html 元素的 id。当我知道 id 时我可以获取该元素,但是如何在单击它时获取未知元素 Id。感谢你们对我的帮助 !

最佳答案

您可以按照以下方式进行。

  1. 使用 WKUserScript 将一些 javascript 注入(inject) WebView。
  2. 注入(inject)的 javascript 将监听任何点击事件的文档主体。
  3. 收到点击事件后,使用 elementFromPoint 查找 DOM 元素。
  4. 以这种方式设置,javascript 将与 native 代码通信。
  5. 收到点击并找到元素后,联系点击 DOM 的 native 代码。

我已经测试过这种工作方式并且它对我有用。

import UIKit
import WebKit

class ViewController: UIViewController {

@IBOutlet weak var webView: WKWebView!
private var url = URL(string: "https://www.google.com")!


override func viewDidLoad() {
super.viewDidLoad()

initializeWebView()
loadData()

}

private func initializeWebView() {

let javascript = """
window.onload = function() {
document.addEventListener("click", function(evt) {
var tagClicked = document.elementFromPoint(evt.clientX, evt.clientY);
window.webkit.messageHandlers.jsMessenger.postMessage(tagClicked.outerHTML.toString());
});
}
"""

let userScript = WKUserScript.init(source: javascript,
injectionTime: .atDocumentStart, forMainFrameOnly: true)
webView.configuration.userContentController.addUserScript(userScript)
webView.configuration.userContentController.add(self, name: "jsMessenger")
}

private func loadData() {
let request = URLRequest(url: url)
webView?.load(URLRequest.init(url: url))
}
}


extension ViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message.body)
}
}

它给你整个元素作为字符串

关于ios - 如何在 WebKit View 中获取点击元素的 Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com