现在,我正在使用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/

10-09 04:51