Xamarin / Android webview скрыть элемент / класс сайта - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь сделать небольшое приложение для Android, показывающее веб-просмотр, загружающее веб-сайт. Я получил это, чтобы показать это со следующими фрагментами кода. Но сейчас мне нужно скрыть некоторые элементы в верхнем и нижнем колонтитуле (например, меню). Я думал, что смогу сделать это, не загружая некоторые классы с веб-страницы, но я не уверен, как правильно это сделать. У кого-нибудь есть какой-то опыт, чтобы поделиться некоторым светом? :)

Заранее спасибо.

protected override void OnCreate(Bundle savedInstanceState)
        {


            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);
            Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

            FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
            fab.Click += FabOnClick;

            DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, Resource.String.navigation_drawer_open, Resource.String.navigation_drawer_close);
            drawer.AddDrawerListener(toggle);
            toggle.SyncState();

            NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
            navigationView.SetNavigationItemSelectedListener(this);

            wbv = FindViewById<WebView>(Resource.Id.webView1);
            wbv.SetWebViewClient(new ExtendWebViewClient());
            WebSettings webSettings = wbv.Settings;
            webSettings.JavaScriptEnabled = true;
            wbv.LoadUrl(txtUrl);


        }

internal class ExtendWebViewClient : WebViewClient
        {
            public override bool ShouldOverrideUrlLoading(WebView view, string url)
              {

                view.LoadUrl(url);
                return true;
              }
        }

edit: просто чтобы отразить изменения во втором классе

public class ExtendWebViewClient : WebViewClient
    {
        public override void OnPageFinished(WebView view, string url)
        {
            base.OnPageFinished(view, url);
             string js = "var myElements = document.getElementsByClassName('fusion-main-menu');" +
              " myElements[0].style.display = 'none'; ";
            if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
            {
                view.EvaluateJavascript(js, null);
            }
            else
            {
                view.LoadUrl(js);
            }
        }

    }

1 Ответ

0 голосов
/ 14 ноября 2018

Поскольку вы включили JavaScript, в веб-представлении появится функция для запуска сценария.

Это код WebView с использованием Xamarin.Forms.WebView, и вы можете скрыть любой элемент веб-просмотра, используя его идентификатор.

 var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...