Reputation: 57
I am trying to show only part of the website. I am trying to hide the slideshow. For some reason, my code doesn't work and it still shows the whole page. I searched the whole web but couldn't find an answer that worked out for me. I am still a beginner, so sorry if I make some dumb mistakes:) Thank you in advance!!
package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.evaluateJavascript("document.getElementById('main-carousel2').style.display='none';", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG,value);
}
});
}
});
webview.loadUrl("http://www.eventster.it");
}
Upvotes: 2
Views: 371
Reputation: 10012
here is what you need to hide the section:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
WebView webview;
final String URL = "http://www.eventster.it";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.evaluateJavascript("document.getElementById('main-carousel2').style.display='none';", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG,value);
}
});
}
});
webview.loadUrl(URL);
}
}
The thing is you are asking webview to hide a content which isn't loaded yet i.e you need to wait until the webView finish loading the full page so that you can hide the content.
Upvotes: 1