javascript - 在android webview中加载部分网页
问题描述
我想在我的 webview 中加载部分网页。我使用 javascript 隐藏了一些 div 类,但问题是首先它完全加载页面然后隐藏 div 类,我想知道是否有一种方法可以在 webview 中加载网页的特定部分,或者有一种方法可以先运行javascript,然后加载网页。这是我用来隐藏 div 类的代码:
public class main extends AppCompatActivity {
String url = "the web page url";
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
new load_web.execute();
}
private class load_web extends AsyncTask < Void, Void, Void > {
@Override
protected void onPostExecute(Void aVoid) {
webView = (WebView) findViewById(R.id.samsung_webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:(function() { " + "document.getElementsByClassName('header-container')[0].style.display='none'; " + "})()");
}
});
webView.loadUrl(url);
}
@Override
protected Void doInBackground(Void...voids) {
return null;
}
}
}
解决方案
最后,经过一番挣扎,我找到了解决方案。我应该在 onLoadResource 而不是 public void onPageFinished 中设置 javascript 代码。正确的代码是:
私有类 load_web 扩展 AsyncTask {
@Override
protected void onPostExecute(Void aVoid) {
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
webView.loadUrl("javascript:(function() { " + "document.getElementsByClassName('header-container')[0].style.display='none'; " + "})()");
}
推荐阅读
- swift - 在 AudioKit 中循环遍历结构数组
- java - 我无法使用 Selenium 和 java 从以下网站抓取表格的内容
- google-identity-toolkit - Google Identity Toolkit 无法登录 AOL 电子邮件:错误代码:2
- android - 付费和免费口味的通用布局,免费提供广告
- python - 没有独特的模式;找到 2 个同样常见的值
- java - 如何在java中获取日期与时间之前
- tsql - 在 SQL 表中查找排名
- python - 迭代不同的数据框
- javascript - 带有 setTimeout 的循环中未定义的变量
- hadoop - Hadoop 3.0.3 -- 权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic、密码)