>  기사  >  웹 프론트엔드  >  Android에서 WebView를 사용하여 웹사이트에 사용자 정의 CSS를 삽입하는 방법은 무엇입니까?

Android에서 WebView를 사용하여 웹사이트에 사용자 정의 CSS를 삽입하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 06:21:31110검색

How to Inject Custom CSS into a Website Using WebView in Android?

Android에서 WebView를 사용하여 웹사이트에 CSS 삽입

WebView를 통해 표시되는 웹사이트에 CSS를 직접 삽입할 수 없으므로 조작이 가능합니다. JavaScript를 사용하는 페이지의 DOM. 방법은 다음과 같습니다.

1. WebView에서 JavaScript 활성화:

<code class="java">webView.getSettings().setJavaScriptEnabled(true);</code>

2. WebViewClient 추가:

<code class="java">webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        // Inject CSS when page is done loading
        injectCSS();
        super.onPageFinished(view, url);
    }
});</code>

3. 웹사이트 로드:

<code class="java">webView.loadUrl("https://www.google.com");</code>

4. JavaScript를 사용하여 CSS 삽입:

<code class="java">private void injectCSS() {
    try {
        InputStream inputStream = getAssets().open("style.css");
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);
        inputStream.close();
        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';" +
                // Decode the CSS from BASE64
                "style.innerHTML = window.atob('" + encoded + "');" +
                "parent.appendChild(style)" +
                "})()");
    } catch (Exception e) {
        e.printStackTrace();
    }
}</code>

참고:

  • style.css 파일은 프로젝트의 자산 폴더에 있어야 합니다.
  • webView.loadUrl() 메서드는 onPageFinished() 콜백 이후에 호출되어야 합니다. 페이지가 로드되기 전에 CSS를 삽입하면 아무런 효과가 없습니다.

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

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