限制特定页面在 WKWebview 中加载?
Restrict specific Pages to Load in WKWebview?
如何防止在 WEKWebView 中加载任何网页?
为了加载整个网站,我正在使用此代码
self.webview.customUserAgent = userAgent
self.webview.navigationDelegate = self
self.webview.load(URLRequest.init(url: URL.init(string: snapshot.value as! String)!))
但我想通过使用 NavigationDelegate 方法限制某些特定页面加载到此 webview 中?
执行此操作的好方法是比较 URL Host
,可以使用以下方法
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let exceptedHosts: [String] = [
"facebook.com",
"m.facebook.com"
]
if let host = navigationAction.request.url?.host {
if exceptedHosts.contains(host) {
decisionHandler(.cancel)
return
}
}
decisionHandler(.allow)
}
这将阻止任何带有 facebook.com
或 m.facebook.com
的 url 被打开,将任何主机添加到数组中以防止它们被打开。
请不要忘记在 viewDidLoad
中设置委托
webview.navigationDelegate = self
如何防止在 WEKWebView 中加载任何网页? 为了加载整个网站,我正在使用此代码
self.webview.customUserAgent = userAgent
self.webview.navigationDelegate = self
self.webview.load(URLRequest.init(url: URL.init(string: snapshot.value as! String)!))
但我想通过使用 NavigationDelegate 方法限制某些特定页面加载到此 webview 中?
执行此操作的好方法是比较 URL Host
,可以使用以下方法
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let exceptedHosts: [String] = [
"facebook.com",
"m.facebook.com"
]
if let host = navigationAction.request.url?.host {
if exceptedHosts.contains(host) {
decisionHandler(.cancel)
return
}
}
decisionHandler(.allow)
}
这将阻止任何带有 facebook.com
或 m.facebook.com
的 url 被打开,将任何主机添加到数组中以防止它们被打开。
请不要忘记在 viewDidLoad
webview.navigationDelegate = self