2011-12-28 36 views

risposta

13

Android può solo il metodo JavaScript se una pagina HTML viene caricato nel Webview

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

chiamerà ciao metodo writen nella pagina html solo se la pagina contenente questo metodo viene attualmente caricato nel controllo webview

prima chiamata

webview.loadUrl("Your html page url"); 

quindi chiamare

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

ho abilitato tutto come detto nelle risposte 1 e 2.Ma niente funziona. – Smitha

+0

controlla la tua pagina html sul browser e controlla se c'è qualche errore nella tua pagina html javascript ... – Talha

+0

La soluzione funziona senza problemi con gli argomenti nel metodo javascript. Ben fatto. – Krystian

3

Prima di utilizzare JavaScript, per prima cosa è necessario verificare che Javascript sia abilitato o meno nell'applicazione utilizzando "getJavaScriptEnabled()" (FALSE predefinito). E il metodo loadUrl() viene utilizzato solo per caricare solo la pagina corrente. Non fa nulla relativo a JavaScript.

ESEMPIO:

Configurazione WebView

// inizializzazione webview

webView = (WebView) findViewById(R.id.webView); 
WebSettings webSettings = webView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 

Caricare HTML in WebView

webView.loadUrl("file:///android_asset/testhtml.html"); 

Ambito WebChromeClient a WebView

webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

La classe MyJavaScriptChromeClient Qui dobbiamo sovrascrivere il metodo onJsAlert() per gestire Alert funzione javascript.

private class MyJavaScriptChromeClient extends WebChromeClient { 
    @Override 
    public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { 
//handle Alert event, here we are showing AlertDialog 
    new AlertDialog.Builder(MainWebViewActivity.this) 
     .setTitle("JavaScript Alert !") 
     .setMessage(message) 
     .setPositiveButton(android.R.string.ok, 
      new AlertDialog.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // do your stuff 
        result.confirm(); 
       } 
      }).setCancelable(false).create().show(); 
    return true; 
    } 
} 

mio file HTML: testhtml.html:

<html> 

    <body > 

    <div onclick="alert('hello')"> Click Me !! </div> 

    </body> 

</html> 

Come funziona? Quando il testo "Click Me !!" sulla WebView si fa clic, viene chiamata la funzione Android onJsAlert (vista WebView, url String, messaggio String, risultato finale JsResult). Il parametro da allertare viene copiato nel parametro message della funzione onJsAlert. E il resto del trattamento è fatto lì. Qui stiamo visualizzando un AlertDialog.

10

Nel caso in cui qualcuno ha problemi con questo come ho fatto io, è necessario chiamare la funzione JavaScript dopo che la pagina ha terminato il caricamento in caso contrario il javascript non sarà chiamato:

webviewer.loadUrl("file:///android_asset/mypage.html"); 
    webviewer.setWebViewClient(new WebViewClient() { 

     public void onPageFinished(WebView view, String url) 
     { 
      webviewer.loadUrl("javascript:hello()"); 
     } 
    }); 
Problemi correlati