2013-04-05 116 views
3

我有一個函數調用javascript:alert('load')試圖顯示一個警告框。 它不能正常工作,甚至我已經setJavaScriptEnabled(true);Android 4.1 webview JavaScript無法正常工作。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    WebView wvMyWeb = (WebView)findViewById(R.id.webView1); 
    wvMyWeb.setWebViewClient(new MyWebViewClient()); 
    wvMyWeb.getSettings().setJavaScriptEnabled(true); 

    switch (item.getItemId()) { 
     case R.id.menu_save: 
      alertbox("Setting","Save Clicked"); 
      wvMyWeb.loadUrl("http://ec.m.zkiz.com"); 
      return true; 
     case R.id.menu_load: 
      wvMyWeb.loadUrl("javascript:alert('load')"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

我缺少什麼?

+0

@Rob沒有,這也是行不通的。 – 2013-04-05 08:48:38

回答

6

您沒有指定chrome客戶端,WebChromeClient將符合您的需求。只需添加到您的WebView:

webView.setWebChromeClient(new WebChromeClient()); 

如果你想處理alert事件在一個特定的方式,你也可以這樣做:

webView.setWebChromeClient(new WebChromeClient() { 
    @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
     /* Do whatever you need here */ 
     return super.onJsAlert(view, url, message, result); 
    } 
}); 
+0

我也在互聯網上發佈了這個函數,但是我的eclipse警告我我沒有它.WebView類型中的方法setWebChromeClient(WebChromeClient)不適用於參數(new WebChromeClient(){})' – 2013-04-07 10:54:38

+0

Make確定你沒有在你的類中導入'android.webkit.WebChromeClient',也可以使用'setWebChromeClient(new WebChromeClient())',而不是'setWebChromeClient(WebChromeClient)'。 – 2013-04-07 12:14:58

+0

我可以手動導入android.webkit.WebChromeClient沒有問題..謝謝。難怪爲什麼沒有快速修復該進口@@ – 2013-04-07 12:19:10