如何禁用 WKWebView 中的自动灰色选择?

How can I disable the automatic gray selection in WKWebView?

我在我的应用程序中使用 WKWebView。当我点击某个东西时,视图上会出现一个灰色的叠加层,如图所示:

我已经禁用了后退导航。禁用用户交互对我来说不是一个选项,因为我想保留点击链接的能力。 感谢您的帮助!

您可以使用 CSS 属性 -webkit-tap-highlight-color:

禁用它
import UIKit
import WebKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let wv = WKWebView(frame: view.bounds)
        view.addSubview(wv)
        wv.load(URLRequest(url:URL(string: "https://www.google.com")!))
        wv.navigationDelegate = self
    }
}

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        let script = "function addStyleString(str) {" +
                "var node = document.createElement('style');" +
                "node.innerHTML = str;" +
                "document.body.appendChild(node);" +
            "}" +
            "addStyleString('* {-webkit-tap-highlight-color: rgba(0,0,0,0);}');"
        webView.evaluateJavaScript(script)
    }
}

与之前的答案类似,但略短,您可以改用透明色。

extension ViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript("document.body.style.webkitTapHighlightColor='transparent';")
    }
}

希望对大家有所帮助!