Maison  >  Article  >  interface Web  >  Comment injecter du CSS dans un site Web affiché dans une WebView Android ?

Comment injecter du CSS dans un site Web affiché dans une WebView Android ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 09:23:02594parcourir

How to Inject CSS into a Website Displayed in an Android WebView?

Injecter du CSS dans un site Web via WebView sous Android

Lorsque vous tentez de modifier l'apparence d'un site Web chargé dans une WebView, par exemple en modifiant la couleur d'arrière-plan de Google.com au rouge, en injectant un fichier style.css depuis le dossier assets, des erreurs imprévues peuvent survenir.

Le code fourni ne parvient pas à injecter le fichier style.css car WebView ne peut pas accéder directement Fichiers CSS.

Solution :

Pour injecter du CSS dans un site Web affiché dans une WebView, une approche basée sur JavaScript doit être utilisée :

<code class="java">public class MainActivity extends ActionBarActivity {

  // Initialize WebView
  private WebView webView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Create WebView and enable JavaScript
    webView = new WebView(this);
    setContentView(webView);
    webView.getSettings().setJavaScriptEnabled(true);

    // Set WebViewClient for page load handling
    webView.setWebViewClient(new WebViewClient() {

      @Override
      public void onPageFinished(WebView view, String url) {
        // Inject CSS after page load
        injectCSS();
        super.onPageFinished(view, url);
      }
    });

    // Load the website
    webView.loadUrl("https://www.google.com");
  }

  // Inject CSS method
  private void injectCSS() {
    try {
      // Retrieve style.css from assets folder
      InputStream inputStream = getAssets().open("style.css");
      byte[] buffer = new byte[inputStream.available()];
      inputStream.read(buffer);
      inputStream.close();

      // Encode and insert CSS into HTML document head
      String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
      webView.loadUrl("javascript:(function() {" +
          "var parent = document.getElementsByTagName('head').item(0);" +
          "var style = document.createElement('style');" +
          "style.type = 'text/css';" +
          "style.innerHTML = window.atob('" + encoded + "');" +
          "parent.appendChild(style)" +
          "})()");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // ... (Other methods and menus)
}</code>

Ce code amélioré permet l'injection de CSS en utilisant JavaScript. Il lit le fichier style.css du dossier assets, l'encode en Base64 et l'intègre dans l'en-tête du document HTML, permettant la manipulation des styles du site Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn