Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menyuntik CSS Tersuai ke dalam Laman Web Menggunakan WebView dalam Android?

Bagaimana untuk Menyuntik CSS Tersuai ke dalam Laman Web Menggunakan WebView dalam Android?

DDD
DDDasal
2024-10-28 09:41:02639semak imbas

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

Suntikan CSS ke dalam Tapak Web dengan WebView dalam Android

Dalam pengaturcaraan Android, memaparkan halaman web dalam aplikasi dicapai menggunakan WebView. Walau bagaimanapun, mungkin terdapat situasi di mana pembangun perlu mengubah suai penampilan halaman yang dipaparkan dengan menyuntik CSS tersuai.

Untuk menangani isu ini, seseorang tidak boleh menyuntik CSS secara langsung ke dalam halaman web dengan WebView. Sebagai penyelesaian, JavaScript boleh digunakan untuk memanipulasi Model Objek Dokumen (DOM) halaman.

Pertimbangkan kod semakan berikut untuk fail MainActivity.java:

public class MainActivity extends ActionBarActivity {

  WebView webView;

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

    webView = new WebView(this);
    setContentView(webView);

    // Enable JavaScript
    webView.getSettings().setJavaScriptEnabled(true);

    // Add a WebViewClient
    webView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {

            // Inject CSS when page is done loading
            injectCSS();
            super.onPageFinished(view, url);
        }
    });

    // Load a webpage
    webView.loadUrl("https://www.google.com");
}

// Inject CSS method: read style.css from assets folder
// Append stylesheet to document head
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';" +
                // Tell the browser to BASE64-decode the string into your script !!!
                "style.innerHTML = window.atob('" + encoded + "');" +
                "parent.appendChild(style)" +
                "})()");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
  }
}

Atas ialah kandungan terperinci Bagaimana untuk Menyuntik CSS Tersuai ke dalam Laman Web Menggunakan WebView dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn