现在,我正在使用UIWebView
,并使用canInitWithRequest:
的NSURLProtocol
,我可以拦截所有请求,并根据需要进行处理。
在新的WKWebView
中,此方法没有,而且我没有找到类似的东西。
有人解决了这个问题吗?
最佳答案
通过实现decidePolicyFor: navigationAction:
的WKNavigationDelegate
方法,您可以在iOS 8.0以后的WKWebView上拦截请求
func webView(_ webView: WKWebView, decidePolicyFor
navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
//link to intercept www.example.com
// navigation types: linkActivated, formSubmitted,
// backForward, reload, formResubmitted, other
if navigationAction.navigationType == .linkActivated {
if navigationAction.request.url!.absoluteString == "http://www.example.com" {
//do stuff
//this tells the webview to cancel the request
decisionHandler(.cancel)
return
}
}
//this tells the webview to allow the request
decisionHandler(.allow)
}
关于ios - 与WKWebView的拦截请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40133512/