javascript - Android webview第二次没有加载URL

标签 javascript android webview

我有加载到 webview 中的动态 URL。我使用 WebChromeClient 来处理 java 脚本事件,因为我需要根据 onJsAlert() 中的 javascript 事件重定向用户。该网页是第一次加载。当我返回并加载相同的 url 时,它的加载。但是,当我完成操作并接收到 javascript 事件时,我将开始一个新 Activity 并完成 webview Activity 。现在,当我加载另一个 URL 时,它没有加载。当我终止应用程序并导航到 webview Activity 时,它会再次加载。

以下是我对 webview 的设置

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);
        webView.getSettings().setDomStorageEnabled(true);

        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setAppCacheEnabled(false);

        webView.setWebViewClient(new myWebClient());
        webView.setWebChromeClient(new MyJavaScriptChromeClient());
        webView.loadUrl(signatureURL);
        webView.setHorizontalScrollBarEnabled(false);

这是我用来显示进度对话框的 WebViewClient

public class myWebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (((BaseActivity) activity).checkConnection()) {
                // TODO Auto-generated method stub
                progressBar.setVisibility(View.VISIBLE);
                view.loadUrl(url);
            }
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            progressBar.setVisibility(View.GONE);
        }

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);
            progressBar.setVisibility(View.GONE);
        }
    }


这就是我处理 JS 事件的方式

private class MyJavaScriptChromeClient extends WebChromeClient {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
            //Check message for success/failure of payment
           Log.i("message",message);
           if (message.equals("Payment Fail")){
               dgAlert("Payment Failed");
           }
           else if (message.equals("Payment Success")){
               dgAlert("Payment Success");
           }
            return true;
        }
    }


这就是我在“警报对话框”上点击“确定”按钮所做的事情
Intent intent=new Intent(Payment.this, DashBoardActivity.class);
startActivity(intent);
if (message.equals(Constants.CANCELLED)) {
   activity.finishAffinity();
   System.exit(0);
 } else
activity.finish();

最佳答案

我知道它已经晚了,但它可能会帮助别人。您可以尝试在 WebChromeClient 中返回 false ,如下所示:

private class MyJavaScriptChromeClient extends WebChromeClient {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
        //Check message for success/failure of payment
       Log.i("message",message);
       if (message.equals("Payment Fail")){
           dgAlert("Payment Failed");
       }
       else if (message.equals("Payment Success")){
           dgAlert("Payment Success");
       }
        return false;
    }
}
它会正常工作。

关于javascript - Android webview第二次没有加载URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399418/

相关文章:

Javascript:将字符串拆分为匹配参数的数组

javascript - 如何在 Rails 数据库中保存 JSON 响应的值?

javascript - 复选框点击事件

javascript - 最高可能的 z-index 是多少?

android - 使用支持库 (ActionBarSherlock) 在 Android 4 中嵌套选项卡

android - 使用 Intent 过滤器重定向 Android webview

javascript - Android WebView 在加载 html 之前注入(inject) Javascript

android - Android 的(比方说 4.0)WebView 是否支持 WebGL?

java - dagger2 注入(inject)的无作用域对象的生命周期是多少?

Android WebView 即时崩溃与 shouldInterceptRequest 覆盖