2014-01-15 39 views
1

由於將我的nexus 4升級到Android kitkat,我的應用程序停止工作。我在webview中使用javascript方法,但現在我的方法沒有被調用。這是我設置的WebView以及如何加載我的JavaScript:在android kitkat中調用javascript函數

​​

和我的Web客戶端:

public class WebClient extends WebViewClient { 


     @Override 
     public void onReceivedError(WebView view, int errorCode, 
            String description, String failingUrl) { 
      Log.e(WebClient.class.getSimpleName(), description + " code " 
        + errorCode); 
     } 

     /** 
     * Load javascript into webview 
     */ 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      ECalcMarblesWrapper wrapper = new ECalcMarblesWrapper(mCtx); 
      String javascripts = wrapper.getJavascripts(); 

      String content = String.format(jsHtmlContainer, javascripts, 
        jsHelpFunctions); 

      view.loadUrl("javascript: " + content); 
     } 
    } 

所有裝載方法被調用,但是當我調用任何JavaScript方法,打印出此錯誤安慰:

Uncaught ReferenceError: initForm is not defined

其中initForm是我的JavaScript方法。

在API 18應用程序在做就好了,我有我的方法

+0

嘿,你找到了奇巧版本的任何解決方案。我面臨同樣的問題。謝謝 – Anu

回答

4

的JavaScript註釋如果應用程序的目標版本設置爲17或更高版本,你需要添加你要導出的每個方法上面標註@JavascriptInterface到網絡視圖。

+0

謝謝,但我有,在Android API 18應用程序做得很好 – Billda

0

Android的kitkat for webview和javascript的一切都在變化。你需要使用evaluateJavascript()

檢查這裏:https://developer.android.com/guide/webapps/migrating.html 這裏:https://developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String, android.webkit.ValueCallback)

+0

感謝隊友,我知道我應該在kitkat中調用不同的javascript函數,但它似乎是問題是從文件加載到webview的JS功能 – Billda