gpt4 book ai didi

安卓 WebView :How to display only part of webpage

转载 作者:行者123 更新时间:2023-11-29 01:29:09 25 4
gpt4 key购买 nike

在网页中,我正在使用,我需要删除一些部分:例如边栏,我尝试了一些方法来做到这一点,但没有成功。它总是显示整个页面。我正在做在 fragment 中。我的代码是:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.standing_fragment,null);
WebView wv= (WebView) view.findViewById(R.id.webView2);
WebViewClient client=new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//super.onPageStarted(view, url, favicon);
if(isLoaded)
return;
isLoaded=true;
view.loadUrl(url);
super.onPageStarted(view, url, favicon);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:document.getElementById('sidebar').style.display = 'none';");
// wv.loadUrl("javascript:document.getElementsByClassName('div.table-container')[0].style.display='none'");
}
};

WebSettings settings=wv.getSettings();
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
wv.setWebViewClient(client);
wv.loadUrl("http://www.soccernews.com/teams/psg/");
return view;
}

我的错误是什么?

最佳答案

要解决这个问题,您需要记住 webview 的工作原理。这是某种嵌入“浏览器”的 View 。你可以这样解决:

  1. 制作您自己的 http get 请求并读取字符串响应。
  2. 处理收到的字符串响应 - 在您的情况下注入(inject) Javascript 代码
  3. 将操纵代码加载到 WebView 。

为了演示示例,我将使用 HttpRequest我为支持 android 22+ 而编写的类(因为 apache 的包已弃用)。

第一步:请求并读取字符串响应

String response=new HttpRequest("http://somedomain.com").prepare().sendAndReadString();

第二步:加载前操纵响应

result+="<script>onload=function(){document.getElementById('sidebar').style.display='none';}</script>";

第三步:将其加载到 WebView

wv.loadData(result, "text/html", "UTF-8");

所有内容的简化示例:

new AsyncTask<String, Void, String>(){
protected String doInBackground(String[] params) {
try {
return new HttpRequest(params[0]).prepare().sendAndReadString();
} catch (Exception e) {
Log.e("***Web View - manipulated content - ERROR***", e.getMessage());
return null;//to promote null further
}
}
protected void onPostExecute(String result) {
if(result==null)return;//Error logged, don't load anything
result=result.concat("<script>onload=function(){document.querySelector('#sidebar').style.display='none';}</script>");
wv.loadData(result, "text/html", "UTF-8");
}
}.execute("http://www.soccernews.com/teams/psg/");

关于安卓 WebView :How to display only part of webpage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com