Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:获取元名称=";说明“;在Webview中_Android_Html_Html Parsing_Android Webview_Meta Tags - Fatal编程技术网

Android:获取元名称=";说明“;在Webview中

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

我正在制作一个使用Android WebView的应用程序。此应用程序显示所加载URL的页面标题和页面说明。作为示例,我使用以下url

获取页面标题很容易

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