【问题标题】:How to call javascript method from android如何从android调用javascript方法
【发布时间】:2013-05-08 11:38:13
【问题描述】:

嗨,在我的 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>

我不知道我错在哪里。请指导我。在此先感谢。

【问题讨论】:

标签: javascript android css webview


【解决方案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") }
      );                         
   }                
});                     

【讨论】:

【解决方案2】:

如果当前在 webView 中加载了 html 页面,Android 只能调用 javascript 方法

第一次通话

webview.loadUrl("你的html页面url"); 然后调用

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

【讨论】:

    【解决方案3】:

    尝试在java文件中处理alert函数,像这样:

    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);        
            }    
    
        }
    

    【讨论】:

      【解决方案4】:

      当我将目标 javascript 函数从主页移动到单独的 .js 文件时,我遇到了同样的问题。出于某种原因,loadUrl() 函数找不到外部加载的函数——只有主页中的函数。一旦我将功能移回,它立即开始工作。

      去看看。

      【讨论】:

        猜你喜欢
        • 2014-05-18
        • 2016-09-14
        • 2014-07-18
        • 2015-11-13
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多