当在谷歌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")) { […]
我有一个WebView在我的应用程序中打开一些网站(总是相同的,这是我自己的网页)。 该网站有一些JS代码,从远程主机加载一些图像。 我想拦截对这些图像的请求(通过URL模式),并给予我自己的内容(即另一个图像),或根据内部应用程序逻辑保持请求不变。 有没有可能做到这一点? 编辑 :目前的问题状态… WebView有能力设置WebViewClient (如Axarydax所述)。 WebViewClient有两个有用的方法 shouldOverrideUrlLoading onLoadResource shouldOverrideUrlLoading能够拦截任何url加载,如果加载是由页面交互触发的(即单击页面上的链接,WebView.loadURL(“”)不触发此方法)。 也可以通过返回false来取消URL加载。 这种方法是不可用的,因为它不能拦截加载页面资源(和图像,我需要拦截,是这样一个页面资源)。 每次页面资源(和图片!thx到jessyjones)加载时, onLoadResource都会触发,但是无法取消该资源。 这使得这个方法也不适合我的任务。
从这个关于WebViewClient和WebChromeClient之间差异的很好的解释看来,如果你使用一个,你不应该使用其他的(对于同一个WebView对象)。 我的理解是正确的吗? 如果不是,那么在什么时候将WebViewClient 和 WebChromeClient用于同一个WebView对象? 有没有一个情况的例子,只有同一个WebView对象使用WebViewClient 和 WebChromeClient才能完成特定的目标?
Android中的setWebViewClient和setWebChromeClient什么不同?
我在LinearLayout创build了一个具有标题和Web视图的Activity 。 在onResume()方法中,它调用webView.loadUrl(url) 。 问题在于,活动首先显示标题,其余部分显示为空白,然后设备浏览器将以URL的页面启动。 我想看到的是在标题下面的WebView中显示的页面。 可能是什么问题呢? 编辑 :好的,做了一些进一步的search,发现这一个: 点击url打开默认浏览器 它指向这里的WebView教程。 只需实现Web客户端并设置它。