Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebChromeClient onJsAlert接收未定义的消息_Javascript_Android - Fatal编程技术网

Javascript WebChromeClient onJsAlert接收未定义的消息

Javascript WebChromeClient onJsAlert接收未定义的消息,javascript,android,Javascript,Android,我有一个安装了WebChromeClient的android webview。 在网页中执行某个操作时,我创建了一个带有消息的javascript警报,该消息被传递回onJsAlert方法 然后,根据消息,我打开另一个活动。 这在Android>=4上运行良好,但在Android 2.3上不起作用 在Android2.3上也会调用onJsAlert方法,但由于某些原因,传递的消息参数未定义。如果您知道为什么会发生这种情况,我们将不胜感激 这是我使用的代码 private WebView webV

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

然后,根据消息,我打开另一个活动。 这在Android>=4上运行良好,但在Android 2.3上不起作用


在Android2.3上也会调用onJsAlert方法,但由于某些原因,传递的消息参数未定义。如果您知道为什么会发生这种情况,我们将不胜感激

这是我使用的代码

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>

点击我!!


这是我使用的代码

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>

点击我!!


我也这么做了……但是我的代码在2.3上也很好……你有没有发现任何错误?如果有,请提供错误日志。很遗憾,没有错误。唯一相关的日志是:
webview(9457):singleCursorHandlerTouchEvent-getEditableSupport FASLE
I/Web控制台(9457):幻灯片放映:未定义:1
D/DEBUG(9457):JS的信息是:未定义的
,最后两个是我发来的OK我应该在这里发布我的代码让你与你的代码匹配吗我也这么做了…但我的代码在2.3上也很好..你有没有收到任何错误?如果有,请提供你的错误日志否不幸的是,没有错误。唯一相关的日志是:
webview(9457):singleCursorHandlerTouchEvent-getEditableSupport FASLE
I/Web控制台(9457):幻灯片放映:未定义:1
D/DEBUG(9457):JS的消息是:undefined
,最后两个是我发来的,我是否应该在这里发布我的代码,以便与您的代码相匹配?问题出在别处,存在于我的javascript函数的输入中,该函数确实返回undefined。我只是假设javascript函数工作正常,问题应该出在onJsAlert回调或其他地方。尽管如此,我还是接受了你的回答,因为它帮助我看到我代码的这一部分是正确的,我应该去别处看看。谢谢问题出在别处,并存在于我的javascript函数的输入中,该函数确实返回了未定义的结果。我只是假设javascript函数工作正常,问题应该出在onJsAlert回调或其他地方。尽管如此,我还是接受了你的回答,因为它帮助我看到我代码的这一部分是正确的,我应该去别处看看。谢谢