我有一个WebView。一切工作正常,但是当我打开一个包含iframe的页面时,iframe不可见。是否需要特定的设置?
我有一个WebView。一切工作正常,但是当我打开一个包含iframe的页面时,iframe不可见。是否需要特定的设置?
首先添加硬件加速,然后将下面的代码添加到你的webView中:
webView.setWebChromeClient(new WebChromeClient());
编辑1
虽然很难确定问题所在,但尝试添加WebChromeClient
、WebViewClient
,并在加载URL
之前不要忘记启用JavaScript,如下:
webView= (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
编辑2
如果您确实需要加载iframe的内容,则可以尝试使用Jsoup来加载HTML页面,但您需要手动查找iframe并提取内容。
Document doc=...
Element iframe1 = doc.select("#iframe1").first();
if (iframe1!=null) {
Document iframeContent = Jsoup.connect(iframe1.attr("src")).get();
}
其中iframe1
是您的iframe
的ID。
String DESKTOP_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";
webView.getSettings().setUserAgentString(DESKTOP_USER_AGENT);
以下的黑科技对我在Webview中加载iframe非常有效。希望还有人会发现它有用。
String webContent="your data to be loaded in webview";
if(webContent.contains("iframe")){
Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(webContent);
matcher.find();
String src = matcher.group(1);
webContent=src;
try {
URL myURL = new URL(src);
webView.loadUrl(src);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}else {
webView.loadDataWithBaseURL(null, "<style>img{display: inline;height: auto;max-width: 100%;}</style>" + webContent, "text/html", "UTF-8", null);}
}
}
同时不要忘记在你的清单文件中添加网络权限。
<uses-permission android:name="android.permission.INTERNET" />
你能检查一下你是否有
android:hardwareAccelerated="true"
<application>
标签中。android:hardwareAccelerated="true"
webView.getSettings().setDomStorageEnabled(true);