0

Java Android コードから JavaScript 関数を呼び出そうとしています。これに関する以前の質問をすべて見ようとしましたが、何も機能していないようです。何か提案はありますか?ありがとう!

javascript code:
<html>
    <head>
        <script language="javascript">
            function doSomething() {
                alert('hey!!!!!!!');
            }
        </script>
    </head>
    <body>
        ilana
    </body>
</html>




java code (from an activity on create)

 final WebView webview=(WebView)findViewById(R.id.myWebView);
 webview.getSettings().setJavaScriptEnabled(true);
 webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");
 webview.loadUrl("file:///android_asset/www/index.html");
 webview.setWebChromeClient(new WebChromeClient());
 webview.loadUrl("javascript:doSomething()");

私の更新された(まだ機能していない)コードは次のとおりです:javascript:

<html>
<head>
<script type="text/javascript">
    function doSomething(){
        alert("hello");
    }
</script>

</head>
<body>
hello hello hello!
</body>
</html>

java:
    final WebView webview=(WebView)findViewById(R.id.myWebView);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.loadUrl("file:///android_asset/www/index.html");
    webview.setWebChromeClient(new WebChromeClient());
    webview.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageFinished(WebView view, String url) {
         super.onPageFinished(view, url);
     view.loadUrl("javascript:doSomething()");
     }

    });
4

2 に答える 2

2

ページのロードが終了するまで待つ必要があると思います

それを試してください

webview.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.loadUrl("javascript:doSomething()");
        }
    });

Main.this はどこにありますか?

webview.setWebChromeClient(new WebChromeClient(){
        @Override
        public boolean onJsAlert(WebView view, String url, String message, final JsResult result){
            new AlertDialog.Builder(Main.this)
            .setTitle("Alert")
            .setMessage(message)
            .setPositiveButton("OK",
                    new AlertDialog.OnClickListener() 
                    {
                        @Override
                        public void onClick(DialogInterface dialog, int which) 
                        {
                            result.confirm();
                        }
                    })
            .setCancelable(false)
            .create()
            .show();
            return true;
        }
    });

@ コメント @

私のonCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView webview  = (WebView)findViewById(R.id.webView1);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d("", "!!!! here 1 !!!!");
            view.loadUrl("javascript:doSomething()");
        }
    });
    webview.setWebChromeClient(new WebChromeClient(){
        @Override
        public boolean onJsAlert(WebView view, String url, String message, final JsResult result){
            Log.d("", "!!!! here 2 !!!!");
            new AlertDialog.Builder(Main.this)
            .setTitle("Alert")
            .setMessage(message)
            .setPositiveButton("OK",
                    new AlertDialog.OnClickListener() 
                    {
                        @Override
                        public void onClick(DialogInterface dialog, int which) 
                        {
                            result.confirm();
                        }
                    })
            .setCancelable(false)
            .create()
            .show();
            return true;
        }
    });
    webview.loadUrl("file:///android_asset/index.html");
于 2013-06-18T18:03:33.057 に答える
0

language="javascript" を使用しました。正しい属性は type="text/javascript" です

于 2013-06-18T17:51:23.280 に答える