【问题标题】:Ajax not working in android webviewAjax 在 android webview 中不起作用
【发布时间】:2016-11-23 05:34:19
【问题描述】:

我正在 webview 中加载一个网站,我们在网站中使用了 Ajax,它在 web 浏览器和移动浏览器上也可以正常工作,但是在 android webview ajax 无法正常工作,控制台中没有错误。这是我的代码:-

public class Activity_WebView extends AppCompatActivity implements  
 ConnectivityReceiver.ConnectivityReceiverListener {
WebView webview;
ProgressDialog pro_dialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setPluginState(WebSettings.PluginState.ON);
    webview.setWebViewClient(new loadinsame());
    pro_dialog = new ProgressDialog(Activity_WebView.this);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDomStorageEnabled(true);
    webview.getSettings().setAllowUniversalAccessFromFileURLs(true);

    boolean connection = checkConnection();
    if (connection) {
        webview.loadUrl("website url");
    } else {
        Toast.makeText(Activity_WebView.this, "Sorry! Not connected to 
       internet", Toast.LENGTH_SHORT).show();
        dialog_Show(webview, "Please check you Inernet connect and Reload.", 
        false);
    }
}

@Override
public void onNetworkConnectionChanged(boolean isConnected) {
    if (!isConnected) {
        Toast.makeText(Activity_WebView.this, "Sorry! Not connected to 
        internet", Toast.LENGTH_SHORT).show();
    }
}

private class loadinsame extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        pro_dialog.setCancelable(false);
        pro_dialog.setMessage("Loading...");
        pro_dialog.show();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        pro_dialog.dismiss();

    }

    @Override
    public void onReceivedError(final WebView webview, WebResourceRequest 
    request, WebResourceError error) {
        super.onReceivedError(webview, request, error);
        pro_dialog.dismiss();
       // dialog_Show(webview, "Error Occur, Do you want to Reload?", true);

    }
}

@Override
public void onBackPressed() {

    if (webview.canGoBack()) {
        webview.goBack();
    } else {
        super.onBackPressed();
    }
}

private boolean checkConnection() {
    boolean isConnected = ConnectivityReceiver.isConnected();
    return isConnected;
}

@Override
protected void onResume() {
    super.onResume();
    MyApplication.getInstance().setConnectivityListener(this);
}
}

当我使用模拟器在 chrome 中检查网站时,发现我的 ajax 仍然挂起,然后在一段时间后取消。 提前致谢。

【问题讨论】:

    标签: android ajax webview android-webview


    【解决方案1】:

    通过设置推广@Jeff Thomas 评论

    mWebView.getSettings().setDomStorageEnabled(true);
    

    工作!!

    【讨论】:

      【解决方案2】:

      当我启用 java 脚本时,它就可以工作了。

       WebView myWebView = (WebView) findViewById(R.id.webview);
       myWebView.loadUrl("");
       myWebView.getSettings().setDomStorageEnabled(true);
       myWebView.getSettings().setJavaScriptEnabled(true);
       myWebView.setWebViewClient(new WebClient());
      

      【讨论】:

        【解决方案3】:

        解决方案

        1. 如果您想在 WebView 中加载网页 url,那么您需要按照我的代码操作它的代码运行良好,并且在网页中可以使用网页中使用的任何类型的脚本语言。
        
             public void webviewCallBack(String coverUrl) {
                WebView  WebView  webView = (WebView) findViewById(R.id.web_view);
                    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
                    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
                    webView.getSettings().setAppCacheEnabled(true);
                    webView.getSettings().setDatabaseEnabled(true);
                    webView.getSettings().setDomStorageEnabled(true);
                    webView.getSettings().setBuiltInZoomControls(true);
                    webView.getSettings().setJavaScriptEnabled(true);
                    webView.clearView();
                    webView.measure(100, 100);
                    webView.getSettings().setUseWideViewPort(true);
                    webView.getSettings().setLoadWithOverviewMode(true);
            
                    webView.setWebViewClient(new WebViewClient() {
            
                        // For api level bellow 24
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                            Log.d("weburl__", url);
            
                            if (url.startsWith("http") || url.startsWith("https")) {
                                // Return false means, web view will handle the link
                                return false;
                            } else if (url.startsWith("tel:")) {
                                // Handle the tel: link
                                handleTelLink(url);
            
           // Return true means, leave the current web view and handle the url itself
                                return true;
                            }
            
                            return false;
                        }
            
                        // From api level 24
                        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                            // Get the tel: url
                            String url = request.getUrl().toString();
                            Log.d("weburl_____", url);
            
                            if (url.startsWith("http") || url.startsWith("https")) {
                           // Return false means, web view will handle the link
                                return false;
                            } else if (url.startsWith("tel:")) {
                                // Handle the tel: link
                                handleTelLink(url);
            
                                // Return true means, leave the current web view and handle the url itself
                                return true;
                            }
            
                            return false;
                        }
                    });
            
                    // Load the url into web view
                    webView.loadUrl(coverUrl);
                    hoadler();
                }
        
        
            public void hoadler() {
        
        
                Runnable task = new Runnable() {
                    public void run() {
                        material_design_progressbar.setVisibility(View.VISIBLE);
                    }
                };
                worker.schedule(task, 5, TimeUnit.SECONDS);
            }
        
        
        1. 希望这段代码对你有帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-15
          • 2018-09-13
          • 2012-05-17
          • 1970-01-01
          相关资源
          最近更新 更多