WebView内で使用しようとしている、既存のWebベースの登録プロセスを備えたアプリがあります。アプリ内のコンテンツをより適切に表示するためにいくつかの要素を非表示にするために、HTMLにいくつかのスタイルタグを追加する必要があります。初期ロードで動作させることはできますが、WebView内のあるページから次のページにそれを実行する方法がわかりません。これが私が働いていることです:
サイトの初期ロード時に、生のhtmlを取得し、"<style>MY STYLES HERE<
呼び出す前に文字列に/style>"を追加しています
wv.loadDataWithBaseURL(url, rawHtml, null, "UTF-8", url);
これは完全に機能しますが、ユーザーがページ上のリンクをクリックして別のページをWebViewにロードすると、このコードは呼び出されず、スタイルタグは失われます。
WebViewClientで「shouldOverrideUrlLoading」をオーバーライドする必要があると思いますが、ここからhtmlをインターセプトする方法がわかりません。私は次のようなことを試してみようと思いました:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String rawHtml = getRawHtml(url) + "<style>...</style>";
wv.loadDataWithBaseURL(url, rawHtml, null, "UTF-8", url);
}
しかし、これは明らかに、新しいロードを開始するためにロードをインターセプトする無限のループにそれを送ります。
また、onPageFinishedをオーバーライドして、次のことを実行してみました。
wv.loadUrl("javascript:(function() { ... })()");
これは機能しますが、ページ全体が読み込まれるまで待機してから実行されます。これにより、ページにすべてのUI要素がそのままロードされたように見え、その後、非表示にしようとしているすべてのUI要素が突然消えます。私の最終的な目標は、モバイルデバイスでのサイトのルックアンドフィールを向上させることであるため、これはオプションではありません。
「shouldOverrideUrlLoading」でスタイルタグを挿入するために他にできることはありますか?または、そうでない場合は、他に何を試すことができますか?