     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?)
+    func dl_webView(_ webView: DLWebView, decidePolicyFor navigationResponse: WKNavigationResponse) -> WKNavigationResponsePolicy
 }
 
 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?) {}
+    func dl_webView(_ webView: DLWebView, decidePolicyFor navigationResponse: WKNavigationResponse) -> WKNavigationResponsePolicy { return .allow }
 }
 
 public extension WKWebView {

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

        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
