如何禁用 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';")
}
}
希望对大家有所帮助!
我在我的应用程序中使用 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';")
}
}
希望对大家有所帮助!