1

こんにちは、私の Android PhoneGap アプリでは、Android コード (DroidGap) から JavaScript メソッドを呼び出す必要があります。サンプル コードを試してみました。

これが私のコードです:

super.loadUrl("file:///android_asset/www/index.html");
super.loadUrl("javascript:onload()");

super.loadUrl("javascript:alert('hai')"); を使用する場合 このアラートが表示されますが、「onload」メソッドを使用するとエラーが発生します。

これがlogcatの私のエラーです:

Uncaught TypeError: Property 'onload' of object [object DOMWindow] is not a function at null:1

index.html のスクリプトは次のとおりです。

 <script type="text/javascript">
 function onload()
 {
     alert("hai");
 }
 </script>

どこが間違っているのかわかりません。ご案内ください。よろしくお願いします。

4

4 に答える 4

1

これを試して、この行も追加してください

    super.setWebChromeClient(new WebChromeClient());
    super.loadUrl("file:///android_asset/www/index.html");

このonPageFinishedのようなこの行呼び出しの後

webview.setWebViewClient(new WebViewClient() {                      
  @Override
    public void onPageFinished(WebView view, String url)  {     

       webview.loadUrl("javascript:(function() {alert("hai") }
      );                         
   }                
});                     
于 2013-05-08T11:51:00.640 に答える
0

HTMLページが現在webViewにロードされている場合、Androidはjavascriptメソッドのみを呼び出すことができます

最初の呼び出し

webview.loadUrl("HTML ページの URL"); それから電話する

webView.loadUrl("javascript:hello()");

于 2013-05-08T12:02:01.163 に答える
0

次のように、Java ファイルでアラート機能を処理してみてください。

mWebView.setWebChromeClient(new MyWebChromeClient());    

    final class MyWebChromeClient extends WebChromeClient {        

        @Override       
        public boolean onJsAlert(WebView view,String url,        
                                 String message,JsResult result) {        

            new AlertDialog.Builder(MainActivity.this).       
                setTitle("Alert").setMessage(message).setPositiveButton("OK",       
           new DialogInterface.OnClickListener() {       
                    @Override      
                    public void onClick(DialogInterface arg0, int arg1) {       

                   }       
            }).create().show();       
           result.confirm();        
            return super.onJsConfirm(view,url,message, result);        
        }    

    }
于 2013-05-08T12:02:28.887 に答える