Как да извикате javascript метод от android

Здравейте В моето приложение phonegap за android трябва да извикам метода на javascript от кода на android (DroidGap). Опитах примерния код.

Ето моят код:

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>

Не знам къде греша. Моля, насочете ме. Благодаря предварително.


person Sudha    schedule 08.05.2013    source източник
comment
възможен дубликат на JavaScript предупреждението не работи в Android WebView   -  person Pragnani    schedule 08.05.2013
comment
ето работещ пример, опитайте това polamreddyn.blogspot.in/ 2013/05/   -  person NagarjunaReddy    schedule 08.05.2013


Отговори (4)


Опитайте този и добавете и този ред

    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") }
      );                         
   }                
});                     
person NagarjunaReddy    schedule 08.05.2013
comment
Използвам Droidgap, така че използвах super.loadUrl - person Sudha; 08.05.2013
comment
Опитах вашия код, но не мога да направя супер, вместо това използвах уеб изглед. Сега не получих никаква грешка, но няма полза, предупреждението не идва. Моля, насочете ме. - person Sudha; 08.05.2013
comment
нека да продължим тази дискусия в чата - person NagarjunaReddy; 08.05.2013
comment
ето пример, опитайте това polamreddyn.blogspot.in/2013 /05/ - person NagarjunaReddy; 08.05.2013

Android може да извика метода на javascript само ако html страница в момента е заредена в webView

първо обаждане

webview.loadUrl("URL адрес на вашата html страница"); тогава се обадете

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

person Community    schedule 08.05.2013

Опитайте да се справите с функцията за предупреждение в 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);        
        }    

    }
person Michael.Zhang    schedule 08.05.2013

Имах същия проблем, когато преместих целевата javascript функция от главната страница в отделен .js файл. По някаква причина функцията loadUrl() не може да намери външно заредени функции - само тези в главната страница. След като преместих функцията обратно, тя веднага започна да работи.

Дайте сметка.

person Michael Galaxy    schedule 29.08.2014