WebChromeClient onJsAlert接收未定义的消息

时间:2013-10-15 10:27:36

标签: javascript android

我有一个安装了WebChromeClient的android webview。 在网页中执行某个操作后,我会创建一条带有消息的javascript警报,该消息将传递回onJsAlert方法。

然后,根据消息我打开另一个活动。 这适用于Android> = 4,但在Android 2.3上无效。

在Android 2.3上,也会调用onJsAlert方法,但由于某种原因,传递的消息参数未定义。不知道为什么会这样,真的很感激!

1 个答案:

答案 0 :(得分:1)

这是我使用的代码

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo);

    try {
        webView = (WebView) findViewById(R.id.webView);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebChromeClient(new MyJavaScriptChromeClient());

        webView.loadUrl("file:///android_asset/texthtml.html");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

private class MyJavaScriptChromeClient extends WebChromeClient {
    @Override
    public boolean onJsAlert(WebView view, String url, String message,
            final JsResult result) {
        // handle Alert event, here we are showing AlertDialog


        new AlertDialog.Builder(WebActivity.this)
                .setTitle("JavaScript Alert !")
                .setMessage(message)
                .setPositiveButton(android.R.string.ok,
                        new AlertDialog.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // do your stuff
                                result.confirm();
                            }
                        }).setCancelable(false).create().show();
        return true;
    }

}

这是我的html文件

<html>

<div onclick="alert('hello')"> Click Me !!  </div>