0
WebView myWebView = (WebView) findViewById(R.id.webview);                
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setPluginsEnabled(true);        
    myWebView.loadUrl("file:///android_asset/index.html");
    myWebView.loadUrl("javascript:hello()");

4.0 エミュレータまたは実機では動作しません。私はhtmlのような適切なタグを持っています

<script type="text/javascript">..</script>

問題なくFirefoxのコンソールから起動できます(アラートコマンドは呼び出されません。Androidでは機能しないことがわかっています)

解決策がありません。助けてください。

ところで、この関数呼び出しはテスト用であるため、ここでは役に立たないようです。これが機能する場合は、後でパラメーターを指定します。

編集:

<h1 id="title"></h1>
....

<script type="text/javascript">
function hello()
{
  console.log("hello"); 
  var title = document.getElementById("title");
  title.innerHTML = "hello";    
}
</script>
4

1 に答える 1

2

問題は、javascriptを呼び出したときにページが読み込まれたという保証がないことです。ページが完全に読み込まれたときにのみjavascript関数を呼び出すようにしてください。

次のコード(http://lexandera.com/2009/01/injecting-javascript-into-a-webview/から引用)を使用すると、注意が必要です。

final WebView webview = (WebView)findViewById(R.id.browser);
/* JavaScript must be enabled if you want it to work, obviously */
webview.getSettings().setJavaScriptEnabled(true);

/* WebViewClient must be set BEFORE calling loadUrl! */
webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url)
    {
        webview.loadUrl("javascript:(function() { " +
                "document.getElementsByTagName('body')[0].style.color = 'red'; " +
                "})()");
    }
});

webview.loadUrl("http://code.google.com/android");
于 2012-09-05T09:19:57.213 に答える