2015-08-27 56 views
2

我正在開發一個Android應用程序,並且我有麻煩的使javascript工作。 這裏是我的主要活動代碼:Javascript不能在webview上工作

protected void onCreate(Bundle savedInstanceState) { 
     Log.i(TAG, "create LocalDialogActivity"); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_local_dialog); 

     webView = (WebView)findViewById(R.id.local_dialog_webview); 
     webView.setWebChromeClient(new WebChromeClient()); 

     webView.getSettings().setUseWideViewPort(true); 
     webView.getSettings().setLoadWithOverviewMode(true); 

     webView.getSettings().setSupportZoom(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.getSettings().setDisplayZoomControls(false); 

     webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 


     } 
} 

private class WebAppInterface { 
      @JavascriptInterface 
      public void validate() { 
        //do some action... 
      } 

     @JavascriptInterface 
     public void cancel() { 
      //do some actions... 
     } 
} 

這裏是我的html代碼:

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="../css/style.css"> 
     <script src="../js/myjavascript.js"></script> 
    </head> 
    <body> 


    <section id="header"> 
    </section> 


    <section id="buttons"> 
      <button class="button" id="no" onclick="cancel()">cancel</button> 
      <button class="button" id="yes" onclick="validate()">validate</button> 
    </section> 

    <footer id="footer"> 
    </footer> 
</body> 

</html> 

當我點擊我的按鈕,功能驗證()和取消()不工作。

這裏是我的javascript代碼:

function validate() { 
    Interface.validate(); 
} 

function cancel() { 
    Interface.cancel(); 
} 

界面是我在我的Android代碼javascriptInterface。

任何想法都會受到歡迎。

回答

2

只需添加

webView.getSettings().setDomStorageEnabled(true); 
0

從我的Android的WebView的使用情況,檢查您是否在 「默認」 縮放級別。例如,如果您放大/縮小,然後按一個按鈕,則無法按下該按鈕,而是在您單擊的位置平移縮放。

如果這不是你的問題,學嘗試以下操作:

檢查腳本是否被正確讀取。通過將cancel()/validate()函數添加到HTML的標頭來執行此操作...

檢查文檔是否已完全加載。通過添加類似functcion initialize(){alert("loaded");}window.onload = initialize();

如果仍failling,然後發佈您的清單,以及任何的logcat應該的錯誤發生,以及參考了web視圖(在使用web視圖滿級做到這一點,或至少是所有與它一起使用的變量)。