通过JS注入的方式获取title标签里面的内容
2017-12-05 14:36
573 查看
常规的html格式如下:
在Android上面,我们获取网页的title标签内的内容时通常有以下两种直接方式:
一、通过WebView.getTitle()来获取title,代码如下:
二、通过WebChromeClient类来获取title,代码如下:
上面这两种方式,第一种获取更为简单但是如果网页没有加载完成时则获取不到数据。第二种则在网页加载完成后会自动回调接口返回title
但是假如title标签内没有内容时再通过以上两种方式获取时却会获取到该网页的地址,而不是期望的空白字符串。针对这种情况,我们可以使用JS注入的方式解决这种问题,代码如下:
由上面代码可以知道,我们可以随意对获取到的网址添加js代码来实现我们的需求,所以可以根据情况使用。
下面是参考链接:
http://blog.csdn.net/u011404611/article/details/54289313
http://blog.csdn.net/f917386389/article/details/50167385
http://www.cnblogs.com/rayray/p/3680500.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>标题部分-www.baidu.com</title> </head> <body> 内容 </body> </html>
在Android上面,我们获取网页的title标签内的内容时通常有以下两种直接方式:
一、通过WebView.getTitle()来获取title,代码如下:
private void webChromClient(){ WebView webView = new WebView(this); webView.getTitle(); }
二、通过WebChromeClient类来获取title,代码如下:
private void webChromClient(){ WebView webView = new WebView(this); webView.setWebChromeClient(new MyChromClient()); } class MyChromClient extends WebChromeClient{ @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); //title就是网页的标题 } }
上面这两种方式,第一种获取更为简单但是如果网页没有加载完成时则获取不到数据。第二种则在网页加载完成后会自动回调接口返回title
但是假如title标签内没有内容时再通过以上两种方式获取时却会获取到该网页的地址,而不是期望的空白字符串。针对这种情况,我们可以使用JS注入的方式解决这种问题,代码如下:
WebView webView = new WebView(this); private void init(){ String url = "http://dn.qq.com/cp/a20170216check/index.html? sServiceType=dn&appid=wxfdab5af74990787a&acctype =wx&code=021VGMQG1WLmd50TG0SG1c3PQG1VGMQ6&state=dn, oFr1jwvssCIetsyvtYsY0KERKq0k,d068ac1531359814a55609 cbd1663aeb,1489979487"; webView.loadUrl(url); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new JsToJava(), "myObj"); webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); /* view.loadUrl(" javascript:myObj .jsMethod(document .getElementsByTagName('title')[0] .innerHTML); "); 关键代码 获取title标签内容。代码等同于下面的 */ view.loadUrl(" javascript:myObj .jsMethod(document .title); ");//关键代码 document.title 不止能获取内容还能进行修改 } }); } private class JsToJava{ /* 这里需要加@JavascriptInterface, 4.2之后提供给javascript调用的函数必须带有@JavascriptInterface */ @JavascriptInterface public void jsMethod(String title){ System.out.println("js返回结果:" + title);//处理返回的结果 } }
由上面代码可以知道,我们可以随意对获取到的网址添加js代码来实现我们的需求,所以可以根据情况使用。
下面是参考链接:
http://blog.csdn.net/u011404611/article/details/54289313
http://blog.csdn.net/f917386389/article/details/50167385
http://www.cnblogs.com/rayray/p/3680500.html
相关文章推荐
- js方法中获取开始标签和结束标签中间插入内容的方式(innerHTML/html())
- js与原生 获取标签 里面的内容区别和checkbox name不一样至少选择一项
- js获取外层标签(排除标签里面的内容)
- 【phpcms-v9】如何通过{pc}标签获取全站文章内容?
- 通过js去掉所有的html标签,得到HTML标签中的所有内容 【2018-1-30】
- spring不通过注入的方式获取对象(BeanFactoryAware \ApplicationContextAware )
- js 通过html()及text()方法获取并设置p标签的显示值
- 通过代码获取sharepoint2010的“我喜欢(I like it)”、“标签(Tags and Notes)”、“记事本”以及“文档等级”活动内容
- JS和JQ中获取标签里的内容方法总结
- JS通过ajax方式从数据库动态获取数据的代码
- 通过js从后台数据库拿到值,再由a标签向jsp传值,再通过另外一个js获取这个值
- jquery通过id或name获取标签的值,以及简单的js正则表达式
- 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??
- JS原生属性选择器querySelector----通过href属性获取对应a标签的Dom元素
- js&jquery获取指定table指定行里面的内容
- 如何通过js获取到CSS3里面transform rotate旋转角度的度数,matrix解析
- js获取class里面的内容
- 使用JS获取表单元素里面的内容
- js获取div对象里面的内容
- JavaScript修改和获取p标签里面内容