android webview gettitle,Android-webview加载网页去除标题

在进行app开发时,我们会经常遇到webview加载一个网址的情况,但是仅仅是webview.loadUrl()并不能满足我们的需求,因为一般网页上面都有一个标题,,标题的颜色和我们的app风格可能整体都不太搭,这个时候该怎么办?除了让web端的朋友们专门写一个的情况下,还有另外一个方法,就是利用js或者jquery处理,原理都是一样,这里只讲一下js。

解决步骤就是:

1.查看要加载页面源代码,找到要删除的内容的标签

2.自己定义WebViewClient,重写WebViewClient的方法,在.onPageFinished()中编辑javascript函数将显示标题的部分置空或者删除

3.onPageFinished()中加载显示被JavaScript处理过的网页数据

核心代码】:

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

//webView 相关配置

public void init(){

webSettings = webView.getSettings();

webSettings.setDomStorageEnabled(true); // 加载东方航空,需设置此属性,否则,页面加载为空白页

//设置WebView属性,能够执行Javascript脚本

webSettings.setJavaScriptEnabled(true);

webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");

webSettings.setAllowFileAccess(true);

webSettings.setUseWideViewPort(true);

webSettings.setLoadWithOverviewMode(true);

//清除 webkit cookie,解决webView显示原先界面

CookieSyncManager.createInstance(this);

CookieSyncManager.getInstance().startSync();

CookieManager.getInstance().removeSessionCookie();

}

/加载完毕后,显示webView,防页面闪烁

private void initHandler() {

mHandler = new Handler(){

@Override

public void handleMessage(Message msg) {

switch (msg.what){

case 0:

webView.setVisibility(View.VISIBLE);

SysProgress.closeProgress();//关闭加载对话框

//获取网页源代码

webView.loadUrl("javascript:window.local_obj.showSource('

'+"

+ "document.getElementsByTagName('html')[0].innerHTML+'');");

break;

}

}

};

}

final class InJavaScriptLocalObj {

//获取网页源代码,分析当前页面是哪一个页

@JavascriptInterface

public void showSource(String html) {

if(loginUrl.contains("m.airchina.com.cn")){ //国航官网

Document document = Jsoup.parse(html);

Element nameElement = document.getElementById("uname");

Element mileElement = document.getElementById("mileage");

if(nameElement!= null && mileElement!= null){ // 登录成功后的页面

String name = nameElement.text();

String mileStr = mileElement.text();

LogUtil.i("name = "+name);

LogUtil.i("mile = "+mileStr);

String mile="";

if(mileStr.contains(":")){

mile= mileStr.split(":")[1];

}

Toast.makeText(VerifyVipActivity.this, "认证成功", Toast.LENGTH_SHORT).show();

}

else{ //登录页面

}

}

}

}

【webView相关配置代码】

WebView webView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = webView.getSettings();

webSettings.setJavaScriptEnabled(true);

webSettings.setUseWideViewPort(true);

webSettings.setLoadWithOverviewMode(true);

webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");

loginUrl = "https://m.airchina.com.cn/ac/c/invoke/login@pg";

webView.loadUrl(loginUrl);

webView.setWebViewClient(new WebViewClient(){

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

webView.setVisibility(View.INVISIBLE);

SysProgress.showProgress(VerifyVipActivity.this); //显示加载对话框

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

//getElementById()返回对拥有指定 id 的第一个对象的引用。

//getElementsByName()返回带有指定名称的对象集合。

//getElementsByTagName()返回带有指定标签名的对象集合。

//getElementsByClassName 返回指定class的对象的集合。

//编写 javaScript方法,使用的是js脚本语言

String javascript = "javascript:function hideOther() {" +

"document.getElementsByTagName('body')[0].innerHTML;" +

"document.getElementsByTagName('header')[0].style.display='none';" + //取标题栏

/*改变国航登录页面的样式*/

"if(document.getElementById('regbtn')){" +

"document.getElementsByTagName('span')[0].style.display='none';" +

"document.getElementsByTagName('span')[1].style.display='none';" +

"document.getElementById('regbtn').style.display='none';" +

"document.getElementById('subbtn').style.backgroundColor='#38761D';" +

"document.getElementById('subbtn').style.borderColor='#ffffff';" +

"document.getElementsByClassName('am-padding-left-xs')[0].style.width='100%';" +

"}else{" +

/*改变国航登录成功后页面的样式*/

"document.getElementsByClassName('am-container')[0].style.display='none';" +

"}" +

"}";

//创建方法

view.loadUrl(javascript);

//加载方法

view.loadUrl("javascript:hideOther();");

mHandler.sendEmptyMessageDelayed(0,500);

}

});

注: 因为本质是webView加载两次Url,一次是原本的Url,一次是处理过的URL ,所以刚进入页面加载的原始页面,过了一段时间是闪烁一下,加载显示的是操作后的Url. 所以,加载开始时webview不可见,显示加载对话框,加载完成后,500ms后,显示webView,关闭对话框。

解析xml源代码使用的是第三方Jsoup来解析相关标签。相关文档连接http://www.open-open.com/jsoup/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值