|
|
||
AndroidのWebViewは, 面白いやつです.
JavaScriptを有効にしてあげると, ちゃんと動きます.
WebView web = new WebView(this); web.setWebChromeClient(new WebChromeClient()); web.getSettings().setJavaScriptEnabled(true); web.setVisibility(View.GONE); layout.addView(web); String html = "<html><head><script type='text/javascript'>" + "window.alert('moke');" + "</script></head><body></body></html>"; web.loadData(html, "text/html", "utf-8");
見えてなくても, 動きます.
Javaの世界にいるオブジェクトを, JavaScriptの世界に出張させることもできます.
たとえば, こんなクラスを定義してみる.
private static class JavaObj { public String call() { return "Moke on Java"; } }
このクラスのインスタンスをJavaScriptの世界に派遣させたい場合は, このメソッドを呼びましょう.
web.addJavascriptInterface(new JavaObj(), "moke");
第2引数はJavaScriptの世界でのお名前. さっそくJavaScriptの世界で仕事してもらいましょう.
WebView web = new WebView(this); web.setWebChromeClient(new WebChromeClient()); web.getSettings().setJavaScriptEnabled(true); web.setVisibility(View.GONE); layout.addView(web); web.addJavascriptInterface(new JavaObj(), "moke"); String html = "<html><head><script type='text/javascript'>" + "window.alert(moke.call());" + "</script></head><body></body></html>"; web.loadData(html, "text/html", "utf-8");
実行すると, こんな感じ. JavaScriptの世界に行ってしまっても, Javaの世界で定義されたpublicメソッド呼べます.