Xamarin/Android webview hide website element/class










0















I'm trying to make a little android app showing a webview loading a website.
I got it to show it with the following code snippets. But what I need now is to hide some elements on the header and the footer(a menu for example). I thought I could do it not loading some classes from the webpage, but I'm not sure how to properly do it. Do anyone have some experience on this to share some light? :)



Thanks in advance.



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: Just to reflect the changes to the second class



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);













share|improve this question




























    0















    I'm trying to make a little android app showing a webview loading a website.
    I got it to show it with the following code snippets. But what I need now is to hide some elements on the header and the footer(a menu for example). I thought I could do it not loading some classes from the webpage, but I'm not sure how to properly do it. Do anyone have some experience on this to share some light? :)



    Thanks in advance.



    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: Just to reflect the changes to the second class



    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);













    share|improve this question


























      0












      0








      0








      I'm trying to make a little android app showing a webview loading a website.
      I got it to show it with the following code snippets. But what I need now is to hide some elements on the header and the footer(a menu for example). I thought I could do it not loading some classes from the webpage, but I'm not sure how to properly do it. Do anyone have some experience on this to share some light? :)



      Thanks in advance.



      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: Just to reflect the changes to the second class



      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);













      share|improve this question
















      I'm trying to make a little android app showing a webview loading a website.
      I got it to show it with the following code snippets. But what I need now is to hide some elements on the header and the footer(a menu for example). I thought I could do it not loading some classes from the webpage, but I'm not sure how to properly do it. Do anyone have some experience on this to share some light? :)



      Thanks in advance.



      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: Just to reflect the changes to the second class



      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);










      webview xamarin.android






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 14 '18 at 17:15







      vvic

















      asked Nov 14 '18 at 12:02









      vvicvvic

      666




      666






















          1 Answer
          1






          active

          oldest

          votes


















          1














          Since you have enabled javascript, there will be a function to run the script in the webview.



          This is the code of WebView using Xamarin.Forms.WebView and this is how you can hide any element of webview using it's id.



           var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");





          share|improve this answer























          • Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

            – vvic
            Nov 14 '18 at 17:19











          • Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

            – vvic
            Nov 14 '18 at 17:30











          • That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

            – Wasif Mahmood Mustafa
            Nov 14 '18 at 20:30










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53299801%2fxamarin-android-webview-hide-website-element-class%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          Since you have enabled javascript, there will be a function to run the script in the webview.



          This is the code of WebView using Xamarin.Forms.WebView and this is how you can hide any element of webview using it's id.



           var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");





          share|improve this answer























          • Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

            – vvic
            Nov 14 '18 at 17:19











          • Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

            – vvic
            Nov 14 '18 at 17:30











          • That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

            – Wasif Mahmood Mustafa
            Nov 14 '18 at 20:30















          1














          Since you have enabled javascript, there will be a function to run the script in the webview.



          This is the code of WebView using Xamarin.Forms.WebView and this is how you can hide any element of webview using it's id.



           var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");





          share|improve this answer























          • Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

            – vvic
            Nov 14 '18 at 17:19











          • Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

            – vvic
            Nov 14 '18 at 17:30











          • That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

            – Wasif Mahmood Mustafa
            Nov 14 '18 at 20:30













          1












          1








          1







          Since you have enabled javascript, there will be a function to run the script in the webview.



          This is the code of WebView using Xamarin.Forms.WebView and this is how you can hide any element of webview using it's id.



           var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");





          share|improve this answer













          Since you have enabled javascript, there will be a function to run the script in the webview.



          This is the code of WebView using Xamarin.Forms.WebView and this is how you can hide any element of webview using it's id.



           var hide = await webview.EvaluateJavaScriptAsync("document.getElementById('UserName').style.display = 'none';");






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 14 '18 at 13:35









          Wasif Mahmood MustafaWasif Mahmood Mustafa

          32415




          32415












          • Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

            – vvic
            Nov 14 '18 at 17:19











          • Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

            – vvic
            Nov 14 '18 at 17:30











          • That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

            – Wasif Mahmood Mustafa
            Nov 14 '18 at 20:30

















          • Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

            – vvic
            Nov 14 '18 at 17:19











          • Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

            – vvic
            Nov 14 '18 at 17:30











          • That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

            – Wasif Mahmood Mustafa
            Nov 14 '18 at 20:30
















          Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

          – vvic
          Nov 14 '18 at 17:19





          Edited the original question to reflect the changes on the second class based on your suggestion. It's loading the webview just fine but it's somehow ignoring the js command. If I execute it on the webpage console it hides the element. It's xamarin.android by the way, if it changes anything. Do you know what can I be doing wrong? Had to change your suggested code sightly to adequate to my code. Thanks for your time.

          – vvic
          Nov 14 '18 at 17:19













          Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

          – vvic
          Nov 14 '18 at 17:30





          Nevermind, it was my bad. I was trying to find the wrong class. Thanks.

          – vvic
          Nov 14 '18 at 17:30













          That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

          – Wasif Mahmood Mustafa
          Nov 14 '18 at 20:30





          That is why I mentioned that the webview is of Xamarin Forms to give you the idea what you really need. You're welcome :)

          – Wasif Mahmood Mustafa
          Nov 14 '18 at 20:30



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53299801%2fxamarin-android-webview-hide-website-element-class%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3

          Museum of Modern and Contemporary Art of Trento and Rovereto