2013-04-05 114 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