         decisionHandler(.allow)
     }
     
+    public func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
+        decisionHandler(dl_webViewDelegate?.dl_webView(webView as! DLWebView, decidePolicyFor: navigationResponse) ?? .allow)
+    }
+    
     @available(iOS 9.0, *) // FIXME: WebContent Process Crash
     public func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
         webView.reload() // & webView.titile will be nil when it crash, then reload the webview

    func dl_webView(_ webView: DLWebView, didStartLoading url: URL?)
    func dl_webView(_ webView: DLWebView, didFinishLoading url: URL?)
    func dl_webView(_ webView: DLWebView, didFailToLoad url: URL?, error: Error?)
}

public extension DLWebViewDelegate {
    func dl_webView(_ webView: DLWebView, didStartLoading url: URL?) {}
    func dl_webView(_ webView: DLWebView, didFinishLoading url: URL?) {}
    func dl_webView(_ webView: DLWebView, didFailToLoad url: URL?, error: Error?) {}
}

public extension WKWebView {

extension DLWebView: WKNavigationDelegate {
    
    public func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        dl_webViewDelegate?.dl_webView(webView as! DLWebView, didStartLoading: webView.url)
    }
    
    public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        dl_webViewDelegate?.dl_webView(webView as! DLWebView, didFinishLoading: webView.url)
    }
    
    public func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        dl_webViewDelegate?.dl_webView(webView as! DLWebView, didFailToLoad: webView.url, error: error)
    }
    
    public func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        dl_webViewDelegate?.dl_webView(webView as! DLWebView, didFailToLoad: webView.url, error: error)
    }
    
    public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
