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元素的值?的主要内容,如果未能解决你的问题,请参考以下文章