Android:获取元名称=";说明“;在Webview中
我正在制作一个使用Android WebView的应用程序。此应用程序显示所加载URL的页面标题和页面说明。作为示例,我使用以下url 获取页面标题很容易Android:获取元名称=";说明“;在Webview中,android,html,html-parsing,android-webview,meta-tags,Android,Html,Html Parsing,Android Webview,Meta Tags,我正在制作一个使用Android WebView的应用程序。此应用程序显示所加载URL的页面标题和页面说明。作为示例,我使用以下url 获取页面标题很容易 public void onPageFinished (WebView view, String url) { String title = view.getTitle(); } 如果您在Chrome中查看上述url的源,则此标题将从 <title>CA chief slams `racist` comments ov
public void onPageFinished (WebView view, String url) {
String title = view.getTitle();
}
如果您在Chrome中查看上述url的源,则此标题将从
<title>CA chief slams `racist` comments over Fawad Ahmed's `beer-branded kit` refusal - Yahoo! News India</title>
CA主管抨击法瓦德·艾哈迈德拒绝啤酒品牌套装的种族主义言论——雅虎!印度新闻
现在,我需要得到元名称“description”,以便显示页面描述,如下所示
<meta name="description" lang="en-IN" content="'CA chief slams `racist` comments over Fawad Ahmed's `beer-branded kit` refusal' on Yahoo! News India. Islamabad, Sept 5 (ANI): Cricket Australia (CA) chief James Sutherland has slammed 'racist comments' aimed at Pakistan-born Australian leg-spinner Fawad Ahmed following his refusal to wear a kit displaying the logo of beer brand VB due to 'religious reasons'."/>
Android web view没有API从元标记“description”获取描述
如何从document元素获取元标记?
document.getElementsByName(“title”)代码>返回一组元素,而不是单个元素,因此在一个周期内,您可以使用element.tagName
获取标记
基本上
document.getElementsByName(“title”)[0]
。标记名应该可以工作
(或)
只需使用以下内容:
var author = $('meta[name=author]').attr("content");
我想你要找的是String.contains(“metaname=\“description\”)
无论如何,这将是最简单的方法。您可能会从中的代码拼凑出一个结果
另一种方法是使用WebView.addJavascriptInterface()
插入murala答案中的代码,但我不确定如何检索结果。使用我的第一个想法。您可以通过以下方式解决问题:
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);
}
}
私有类接口{
@JavascriptInterface
@抑制警告(“未使用”)
public void processHTML(字符串内容){
//处理内容
}
}
addJavascriptInterface(新的JsInterface(),“CC_基金”);
setWebViewClient(新的WebViewClient()){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
mWebView.loadUrl(“javascript:window.CC_FUND.processHTML((函数(){var metas=document.getElementsByTagName('meta');\n”+
“\n”+
“对于(var i=0;iKotlin代码:
如果使用evaluateJavascript
,则无需定义javascriptInterface
调用evaluateJavascript
然后使用ValueCallback resultCallback
回调值
webview.evaluateJavascript(
"""
function getOGPImageUrl(){
var metas = document.getElementsByTagName('meta');
for (var i=0; i<metas.length; i++) {
if (metas[i].getAttribute("property") == "og:image") {
return metas[i].getAttribute("content");
}
}
return "";
};
getOGPImageUrl();
""".trimIndent()) {
// this is ValueCallback block
Logger.d("getOGPImageUrl: $it")
}
webview.evaluateJavascript(
"""
函数getOGPImageUrl(){
var metas=document.getElementsByTagName('meta');
对于(var i=0;i