>  기사  >  웹 프론트엔드  >  Android WebView에 표시된 웹사이트에 CSS를 삽입하는 방법은 무엇입니까?

Android WebView에 표시된 웹사이트에 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를 통해 웹사이트에 CSS 삽입

WebView 내에 로드된 웹사이트의 모양을 변경하려는 경우 Google.com의 배경색을 빨간색으로 변경하고, 자산 폴더에서 style.css 파일을 삽입하면 예상치 못한 오류가 발생할 수 있습니다.

WebView에서 직접 액세스할 수 없기 때문에 제공된 코드에서는 style.css 파일 삽입에 실패합니다. CSS 파일.

해결책:

WebView에 표시된 웹사이트에 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를 삽입할 수 있습니다. 자산 폴더에서 style.css 파일을 읽고 Base64로 인코딩한 후 HTML 문서 헤드에 포함시켜 웹사이트 스타일을 조작할 수 있습니다.

위 내용은 Android WebView에 표시된 웹사이트에 CSS를 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.