在WebViewClient中启用一般JavaScript

当在谷歌search一个答案,似乎我不是唯一卡住了似乎无法解决的问题。

我设法用自定义的WebViewClient创build一个WebView – 这使我有可能有一个processdialog,并显示一个错误消息,如果无法加载的URL。

但是这造成了JavaScript的问题。 我正在加载的URL有一些JavaScript,它改变了一些HTML元素的CSS样式(显示或隐藏元素)或redirect到另一个位置onclick – 或者甚至想要显示一个警告框。 但通过使用WebViewClient这些都没有工作。

这是我如何加载页面:

public void loadUrl(String url) { final ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", getString(R.string.loading), true); final WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVerticalScrollBarEnabled(false); myWebView.setHorizontalScrollBarEnabled(false); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(myActivity.this, url, Toast.LENGTH_SHORT).show(); //Debugging purposes if (url.endsWith(".mp4")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "video/mp4"); view.getContext().startActivity(intent); } else { view.loadUrl(url); } return true; } public void onPageFinished(WebView view, String url) { //Toast.makeText(myActivity.this, "Oh no!", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(myActivity.this, description, Toast.LENGTH_SHORT).show(); String summary = "<html><body><strong>" + getString(R.string.lost_connection) + "</body></html>"; myWebView.loadData(summary, "text/html", "utf-8"); } }); //End WebViewClient myWebView.loadUrl(url); } 

这可能可以用更聪明的方式来完成,但我是Java和Android开发人员的新手。

我可以为WebViewClient启用JavaScript吗? 删除WebViewClient解决了这个问题,但是当页面错误或者加载完成后,我无法捕获事件。

我不知道你确切的问题是什么,但我可以启用JavaScript和自定义WebViewclient没有任何问题:

 WebView vistaWeb = (WebView) findViewById(R.id.webview); vistaWeb.setWebChromeClient(new MyCustomChromeClient(this)); vistaWeb.setWebViewClient(new MyCustomWebViewClient(this)); vistaWeb.clearCache(true); vistaWeb.clearHistory(); vistaWeb.getSettings().setJavaScriptEnabled(true); vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

“Javascript-URLs”是否通过shouldOverrideUrlLoading路由? 尝试检查,如果是这样的话,返回false的链接(以便webview处理链接,而不是您的WebViewClient)

试试这个来启用JavaScript

 WebView myWebView = (WebView) findViewById(R.id.webView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient()); myWebView.loadUrl(url);