1

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

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

在 Android 2.3 上,也会调用 onJsAlert 方法,但由于某种原因,传递的消息参数未定义。任何想法为什么会发生这种情况,将不胜感激!

4

1 回答 1

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>

于 2013-10-15T11:26:57.653 回答