Как вызвать метод javascript из Android

Привет. В моем приложении Android phonegap мне нужно вызвать метод javascript из кода Android (DroidGap). Я пробовал пример кода.

Вот мой код:

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

Когда я использую super.loadUrl("javascript:alert('hai')"); я получаю это предупреждение. Но когда я использую метод «загрузка», я получаю сообщение об ошибке.

Вот моя ошибка в 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");

После этой строки вызовите вот так на странице завершено

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
Я попробовал ваш код, но я не могу супер, вместо этого я использовал webview. Теперь я не получил никакой ошибки, но бесполезен, оповещение не приходит. Пожалуйста, помогите мне. - 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