LoginSignup
23
23

More than 5 years have passed since last update.

KitKat(android4.4/SDK19)以降のloadUrlでjavascript実行エラーになる件の修正方法

Last updated at Posted at 2014-09-24

やりたいこと

WebView#loadUrlでhtmlを読んだ後、その内容に対してjavascriptを実行したい。
例)ある部分の文字列を置換したい、など。

4.3以下まで出来た記述

mWebView.setWebViewClient(new MyWebViewClient());
mWebView.loadUrl("file:///android_asset/index.html");

private class MyWebViewClient extends WebViewClient {
  @Override
  public void onPageFinished(WebView view, final String url) {
     mWebView.loadUrl("javascript:document.getElementById('sample').innerHTML = javascript changed");
  }
}

4.4.xで実行するとエラー

I/chromium(30811): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'innerHTML' of null", source: 

おそらく、4.4以降WebViewの内部実装がchroniumに変わったため出るようになったぽい。

修正方法

SDK19以降で追加されたメソッドWebView#evaluateJavascriptを使う。

mWebView.evaluateJavascript("javascript:document.getElementById('sample').innerHTML = javascript changed", null);

第2引数にコールバックを登録すればJavascriptの実行結果が受け取れる。

23
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
23