我想将部分网页加载到我的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;
}
}
}
答案 0 :(得分:0)
最后,经过一番挣扎,我找到了解决方案。我应该在onLoadResource中设置javascript代码,而不是在公共无效的onPageFinished中设置。正确的代码是:
私有类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'; " + "})()");
}