         scrollView.bounces = false
         uiDelegate = self
         navigationDelegate = self
+        reset()
         
     }
     

    // MARK: - Delegate
    // MARK: UIWebViewDelegate
    open func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        
        guard let option = option else {
            printWarning("The option is nil")
            self.callJsMethod("initEchartView")
            return;
        }
        resizeDiv()
        
        JsCache.removeAll() // 清空之前缓存的方法，避免出现重复的情况， 在调用 option.jsonString 会重新生成
        let optionJson = option.jsonString
        
        // 定义Js与Clousure之间的匹配关系
        // 必须要在option.jsonString调用过一次之后
        // 并且需要在调用loadEcharts之前，这样才能建立关系
        for function in JsCache.allJsStrings() {
            printInfo(function)
            self.callJsMethod(function)
        }
        
        let js = "loadEcharts('\(optionJson.replacingOccurrences(of: "\\n", with: "<br>"))')"
        printInfo(js)
        callJsMethod(js.replacingOccurrences(of: "\n", with: "\\n"))
        
    }
    
    open func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {

    
    open var option: Option?
    
    fileprivate var htmlContents: String = ""
    fileprivate var bundlePath: String = ""
    fileprivate var loadFinsih = false

    public convenience init() {
        self.init(frame: CGRect.zero, configuration: WKWebViewConfiguration())
