2015-11-14 62 views
0

我有一個包含jqmath腳本,我從在Android Studio中的外部腳本加載網頁視圖元素太早,函數變量傳遞到腳本是這樣的:OnPageFinished()被調用了的WebView

void UpdateFunc() { 
    js = "<html><head>" 
      + "<link rel='stylesheet' href='file:///android_asset/mathscribe/jqmath-0.4.3.css'>" 
      + "<script src='file:///android_asset/mathscribe/jquery-1.4.3.min.js'></script>" 
      + "<script src='file:///android_asset/mathscribe/jqmath-etc-0.4.3.min.js'></script>" 
      + "</head><body>" 
      + "<script>var s = '$$" + functext + "$$';M.parseMath(s);document.write(s);</script> </body>"; 
    webView.loadDataWithBaseURL("", js, "text/html", "UTF-8", ""); 
} 

我需要運行一些功能,我已建議延長使用WebViewClient和運行OnPageFinished(),我的代碼如下(在OnCreate中):

webView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 

      code 
     } 
    }); 

的問題,OnPageFinished被前的腳本完成更新稱爲webview。

是否有任何方法可以讓我在腳本完成更新webview後立即運行代碼?或者如何解決OnPageFinished的問題?還要注意,我沒有在函數中傳遞任何變量,因爲我只有一個webview。

在此先感謝。

回答

0

Jqmath - apply after page load

基本上,你叫M.parseMath一個DOM元素已加載jqMath文本之後。

+0

你能再詳細一點嗎?我如何將腳本鏈接解析爲DOM元素,以及如何將它加載到webview中? –

+0

我對android,webview甚至java都一無所知。我可以告訴你,你的M.parseMath(s)調用是一個無操作(和一個錯誤)。 M.parseMath()應該傳遞一個DOM節點,而不是一個字符串。我不知道你在哪裏設置functext。設置s然後執行document.write(s)是沒有意義的,只需在你的js變量(這實際上是html不是js)中放置「$$」+ functext +「$$」。如果您希望在創建頁面之後創建或更改數學,則只需調用M.parseMath()(例如,以響應用戶輸入。希望這可以幫助。 –

+0

看起來像我們分享共同的東西,我也不知道很多關於android,java或webview;)。我試着拋出M.parsemath,只使用document.write(s),沒有它就可以正常工作。 「functext」只是一個等式(即:5 + 54/5)。每當用戶編輯公式時,這段代碼就會被調用,所以它會更新並顯示到webview中。然而,該函數有時會出現界限,我需要應用調整大小,我目前有一個粗暴的方法做到這一點,但我想要的是找出什麼時候才能完成而不會顯示文物 –

相關問題