aswww log

エンジニアの技術録。アプリとかウェブとか

WebViewでロード後にアプリ内で指定したjavascriptを実行させたい

jQueryよろしく、ページオンロード後にjavascriptが実行できた実装

webView.loadUrl()した後にonPageFinished()内でwebView.evaluateJavascript()する。

public class MainActivity extends AppCompatActivity {

    protected WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setContentView(R.layout.activity_main);
        findViews(); // Viewの読み込み

        webView.loadUrl("[最初にロードするページURI]");

        webView.setWebViewClient(new WebViewClient() {
 
            @Override
            public void onPageFinished(WebView view, String url) {
                webView.evaluateJavascript("document.getElementById('aswww').style.backgroundColor = '#FFFFFF'",null);
        });
    }
期待どおりの動きにならなかった実装ログ

ダメだった実装のログ。WebView周りの動作とかメソッドの意味をあんまり把握していない人のただの試行錯誤なので参考までに。

  • webView.loadUrl()した後にonCreate()直下でwebView.evaluateJavascript()でjavascript実行した場合

→なんかうまく実行されなかった。

webView.evaluateJavascript("document.getElementById('aswww').style.backgroundColor = '#FFFFFF'",null);
  • webView.loadUrl()した後にonPageFinished()内でwebView.loadUrl()でjavascript実行した場合

→loadUrl()は追記じゃなくて全HTML上書きされてしまうし、挙動も変になったのでダメ。

webView.loadUrl("javascript:document.getElementById('aswww').style.backgroundColor = '#FFFFFF';");
  • webView.loadUrl()した後にonPageFinished()内でwebView.loadData()でHTMLタグ内でjavascript実行する形で記入して実行した場合

→loadUrl()と同じく追記じゃなくて全HTML上書きされてしまうのでダメ。

webView.loadData("<html><head>aaa...",  "text/html", "utf-8");