(WKWebView)長押しインタラクション禁止
2363 ワード
WKWebViewを使用してhtml記事を表示し、loadFileURLでhtmlファイルをロードし、ローカルキャッシュ画像をロードします.写真を长く押すと窓が弾けます.文字を长く押すと窓が弾けます.リンクをクリックしてジャンプします.. 1.長押しインタラクション禁止
もちろんそうでもいい
それでもいい 2.リンクジャンプ禁止
let configuration = WKWebViewConfiguration()
configuration.preferences = WKPreferences()
configuration.preferences.minimumFontSize = 12
configuration.preferences.javaScriptEnabled = true
configuration.preferences.javaScriptCanOpenWindowsAutomatically = false
// "document.documentElement.style.webkitTouchCallout='none';" //
// "document.documentElement.style.webkitUserSelect='none';" //
let javascript = "document.documentElement.style.webkitTouchCallout='none';document.documentElement.style.webkitUserSelect='none';"
let noneSelectScript = WKUserScript(source: javascript, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true)
let v = WKWebView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: contentHeight), configuration: configuration)
v.configuration.userContentController.addUserScript(noneSelectScript)
もちろんそうでもいい
webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none';", completionHandler: nil)
webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none';", completionHandler: nil)
それでもいい
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print(" ")
// /
webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none';", completionHandler: nil)
webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none';", completionHandler: nil)
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
DLog("navigationAction = %@, request = %@", navigationAction, navigationAction.request.url ?? "url = nil")
//
if navigationAction.request.url?.scheme?.contains("http") == true {
decisionHandler(WKNavigationActionPolicy.cancel)
} else {
decisionHandler(WKNavigationActionPolicy.allow)
}
}