Webview隐藏CSS元素

问题描述 投票:0回答:1

我一直试图更改我的Webview应用程序,以不显示其加载的源URL的标题。我已经过了Stack Overflow历史记录中提供的所有方法,但其中的任何一个都没有起作用-所以我做得对,或者这些不再起作用了?

我的目标是找到一种方法来影响加载到webview应用程序的页面的CSS(例如,隐藏页眉和页脚)。前面提供的大多数方法都是基于Java的,我并不熟悉。我愿意寻求任何帮助,因为这是我正在建立的第一个项目,而我对此的知识还不太好。

此刻是我的MainActivity.java:

package com.U247;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView WebView;
/* dawdaw */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView = (WebView)findViewById(R.id.U247);

        WebView.getSettings().setJavaScriptEnabled(true);
        WebView.setWebViewClient(new WebViewClient());
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            WebView.evaluateJavascript("var FunctionOne = function () {"
                    + "  try{document.getElementsByClassName('random-postaus')[0].style.display='none';}catch(e){}"
                    + "};", null);
        } else {
            WebView.loadUrl("javascript:"
                    + "var FunctionOne = function () {"
                    + "  try{document.getElementsByClassName('random-postaus')[0].style.display='none';}catch(e){}"
                    + "};");
        }
        WebView.loadUrl("https://thewebsite.com");
    }
    @Override
    public void onBackPressed() {
        if (WebView.canGoBack()){
            WebView.goBack();

        } else {
            super.onBackPressed();
        }
    }

}
android android-webview android-studio-3.0
1个回答
0
投票

好吧,终于找到了一种隐藏CSS元素的方法。在下面添加了整个代码,关键是使用onPageFinished方法。尽管它不是完美的,并且仅在加载整个页面后才激活,但在我的情况下,它仍然是隐藏元素的有效方法。

package com.U247;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView WebView;
/* dawdaw */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView = (WebView)findViewById(R.id.U247);

        WebView.getSettings().setJavaScriptEnabled(true);

        /* HIDE UNWANTED CSS ELEMENTS */
        WebView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url)
            {
                // hide element by class name
                WebView.loadUrl("javascript:(function() { " +
                        "document.getElementsByClassName('class-name-here')[0].style.display='none'; })()");
                // hide element by id
                WebView.loadUrl("javascript:(function() { " +
                        "document.getElementById('header').style.display='none';})()");

            }
        });
        WebView.loadUrl("https://thewebsite.com");
    }
    @Override
    public void onBackPressed() {
        if (WebView.canGoBack()){
            WebView.goBack();

        } else {
            super.onBackPressed();
        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.