从 android WebView 访问元数据
Access Meta Data from android WebView
如何在 Android 中访问加载到 WebView 中的 HTML 页面的元数据?
我搜索了 whosebug.com 和 google 小时,但找不到任何答案。
我只能通过此代码获得 url 和标题:
webView.getTitle();
webView.getUrl();
怎么办,webview不支持?
不要打开 WebView
中的 URL。
首先。开一个HttpURLConnection
到URL。读取服务器的输出,您可以扫描服务器响应以找到您的元数据。
当您读取服务器输出时,将数据写入缓冲区,然后使用 loadData
而不是 loadUrl
在 WebView
[=15= 中显示缓冲数据]
如果它是您自己的网页,那么您可以使用以下代码将元描述或任何文本传递到您的应用:
public class WebAppInterface {
@JavascriptInterface
public void setDesc(String desc) {
mDescription = desc;
}
}
然后给WebView添加JS接口:
webView.addJavascriptInterface(new WebAppInterface(), "Android");
最后,在您的网页中添加以下代码:
<script type="text/javascript">
Android.setDesc("Your meta tag desc here");
</script>
阅读更多内容
您可以通过以下简单方法解决问题:
private class JsInterface {
@JavascriptInterface
@SuppressWarnings("unused")
public void processHTML(String content) {
//handle content
}
}
mWebView.addJavascriptInterface(new JsInterface(), "CC_FUND");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
mWebView.loadUrl("javascript:window.CC_FUND.processHTML( (function (){var metas = document.getElementsByTagName('meta'); \n" +
"\n" +
" for (var i=0; i<metas.length; i++) { \n" +
" if (metas[i].getAttribute(\"name\") == \"description\") { \n" +
" return metas[i].getAttribute(\"content\"); \n" +
" } \n" +
" } \n" +
"\n" +
" return \"\";})() );");
super.onPageFinished(view, url);
}
}
如何在 Android 中访问加载到 WebView 中的 HTML 页面的元数据?
我搜索了 whosebug.com 和 google 小时,但找不到任何答案。
我只能通过此代码获得 url 和标题:
webView.getTitle();
webView.getUrl();
怎么办,webview不支持?
不要打开 WebView
中的 URL。
首先。开一个HttpURLConnection
到URL。读取服务器的输出,您可以扫描服务器响应以找到您的元数据。
当您读取服务器输出时,将数据写入缓冲区,然后使用 loadData
而不是 loadUrl
在 WebView
[=15= 中显示缓冲数据]
如果它是您自己的网页,那么您可以使用以下代码将元描述或任何文本传递到您的应用:
public class WebAppInterface {
@JavascriptInterface
public void setDesc(String desc) {
mDescription = desc;
}
}
然后给WebView添加JS接口:
webView.addJavascriptInterface(new WebAppInterface(), "Android");
最后,在您的网页中添加以下代码:
<script type="text/javascript">
Android.setDesc("Your meta tag desc here");
</script>
阅读更多内容
您可以通过以下简单方法解决问题:
private class JsInterface {
@JavascriptInterface
@SuppressWarnings("unused")
public void processHTML(String content) {
//handle content
}
}
mWebView.addJavascriptInterface(new JsInterface(), "CC_FUND");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
mWebView.loadUrl("javascript:window.CC_FUND.processHTML( (function (){var metas = document.getElementsByTagName('meta'); \n" +
"\n" +
" for (var i=0; i<metas.length; i++) { \n" +
" if (metas[i].getAttribute(\"name\") == \"description\") { \n" +
" return metas[i].getAttribute(\"content\"); \n" +
" } \n" +
" } \n" +
"\n" +
" return \"\";})() );");
super.onPageFinished(view, url);
}
}