WebView怎么获取Html元素的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebView怎么获取Html元素的值?相关的知识,希望对你有一定的参考价值。

参考技术A 只能通过javascript来获取, 然后通过JS获取, 然后通过JavaScriptInterface来传递给Java层。\\x0d\\x0a\\x0d\\x0a做webview,遇到2种需求,一种是在自己服务器上的html中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。\\x0d\\x0a于是,总结了2种通过webview获取网页上的数据的方式:\\x0d\\x0a第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。\\x0d\\x0a\\x0d\\x0aclass MyJavaScriptInterface \\x0d\\x0a\\x0d\\x0a MyJavaScriptInterface() \\x0d\\x0a \\x0d\\x0a\\x0d\\x0a /**\\x0d\\x0a * js调java,显示图片\\x0d\\x0a *\\x0d\\x0a * @param imgUrls\\x0d\\x0a */\\x0d\\x0a @JavascriptInterface\\x0d\\x0a public void showImages(String[] imgUrls) \\x0d\\x0a LogUtils.i(TAG, "imgUrls = " + imgUrls[0]);\\x0d\\x0a NewsDetailWebviewActivity.this.imgUrls = imgUrls;\\x0d\\x0a \\x0d\\x0a\\x0d\\x0a\\x0d\\x0a...\\x0d\\x0awebView.addJavascriptInterface(new MyJavaScriptInterface(), "faxun");\\x0d\\x0a\\x0d\\x0a第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串)。\\x0d\\x0a\\x0d\\x0aclass MyWebClient extends WebViewClient \\x0d\\x0a@Override\\x0d\\x0a public void onPageFinished(WebView view, String url) \\x0d\\x0a view.loadUrl("javascript:window.getShareData.OnGetShareData("\\x0d\\x0a + "document.querySelector(\'meta[name=\"reply_info\"]\').getAttribute(\'content\')" + ");");\\x0d\\x0a super.onPageFinished(view, url);\\x0d\\x0a \\x0d\\x0a\\x0d\\x0a\\x0d\\x0aprivate class GetShareDataInterface \\x0d\\x0a @JavascriptInterface\\x0d\\x0a public void OnGetShareData(String shareData) \\x0d\\x0a if (null != shareData) \\x0d\\x0a try \\x0d\\x0a JSONObject shareJson = new JSONObject(shareData);\\x0d\\x0a title = shareJson.optString("title");\\x0d\\x0a description = shareJson.optString("description");\\x0d\\x0a imageUrl = shareJson.optString("imageUrl");\\x0d\\x0a catch (JSONException e) \\x0d\\x0a e.printStackTrace();\\x0d\\x0a \\x0d\\x0a\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a \\x0d\\x0a\\x0d\\x0a.....\\x0d\\x0awebView.setWebViewClient(new MyWebClient());\\x0d\\x0a\\x0d\\x0a其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。

jQuery怎么获取一个DIV下所有元素的值

可以使用jQuery的children方法来获取某个元素下的所有子元素。

工具原料:编辑器、浏览器

1、使用children方法可以获得选择器下的所有子元素,代码实例如下:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<style>
  body  font-size:16px; font-weight:bolder; 
  p  margin:5px 0; 
</style>
</head>
<body>
  <div>
    <span>Hello</span>
    <p class="selected">Hello Again</p>
    <div class="selected">And Again</div>

    <p>And One Last Time</p>
  </div>
<script>$("div").children(".selected").css("color", "blue");</script>
</body>
</html>

2、运行的结果是找到类名为 "selected" 的所有 div 的子元素,并将其设置为蓝色,结果如下:

参考技术A

直接用find  

filter 参数在 find() 方法中是必需的,这与其他树遍历方法不同。

提示:如需返回所有的后代元素,请使用 "*" 选择器。

<div id="test">
    <a>1</a>
    <b>1</b>
    <div><a>2</a><b>2</b></div>
</div>
<script>
    console.log($("#test").find("*"))
</script>

参考技术B $("div").children(); 参考技术C 我想知道你 div下有哪些元素,最好有代码示例。

以上是关于WebView怎么获取Html元素的值?的主要内容,如果未能解决你的问题,请参考以下文章

electron怎么获取到webview里的元素,webview为加载的网站

怎么使用jquery获得标签的值或元素的内容

怎么使用jquery获得标签的值或元素的内容

Python元组

js怎么获取元素的class名?

在Android中获取html的textarea的值