ホームページ  >  記事  >  ウェブフロントエンド  >  Android WebView に表示される Web サイトに CSS を挿入するにはどうすればよいですか?

Android WebView に表示される Web サイトに CSS を挿入するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 09:23:02594ブラウズ

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

Android の WebView 経由で Web サイトに CSS を挿入する

WebView 内にロードされた Web サイトの外観を変更しようとするとき (変更など) Google.com の背景色を赤にすると、アセット フォルダーから style.css ファイルを挿入すると、予期せぬエラーが発生する可能性があります。

WebView が直接アクセスできないため、提供されたコードは style.css ファイルの挿入に失敗します。 CSS ファイル。

解決策:

WebView に表示される Web サイトに CSS を挿入するには、JavaScript ベースのアプローチを利用する必要があります:

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

この改良されたコードにより、JavaScript を利用して CSS を挿入できるようになります。これは、assets フォルダーから style.css ファイルを読み取り、Base64 にエンコードして、HTML ドキュメントのヘッドに埋め込み、Web サイトのスタイルの操作を可能にします。

以上がAndroid WebView に表示される Web サイトに CSS を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。