2

我有一个函数调用javascript:alert('load')试图显示一个警告框。即使我已经这样做了,它也不起作用setJavaScriptEnabled(true);

@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);
    }
}

我错过了什么?

4

1 回答 1

5

您没有指定 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); 
    } 
});
于 2013-04-05T11:39:02.263 回答