2011-12-28 12 views

Odpowiedz

13

Androidem wywołać tylko metodą Javascript, jeśli strona html jest aktualnie załadowany Webview

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

wywoła cześć sposób napisany w stronę html tylko w przypadku strona zawierająca ten sposób jest aktualnie załadowany do kontroli Webview

pierwsza rozmowa

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

następnie wywołać

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

Mam włączone wszystko, jak powiedzieli w odpowiedzi 1 i 2.Ale nic nie działa. – Smitha

+0

proszę sprawdzić swoją stronę html w przeglądarce i sprawdza czy jest jakiś błąd na twojej stronie html javascript ... – Talha

+0

Rozwiązanie działa bez problemów z argumentami w metodzie javascript. Niezłe. – Krystian

3

Przed użyciem JavaScript, najpierw trzeba sprawdzić czy Javascript został aktywowany lub nie w aplikacji za pomocą „getJavaScriptEnabled()” (Jego domyślna false). A metoda loadUrl() służy tylko do ładowania bieżącej strony. Nie robi nic związanego z JavaScriptem.

PRZYKŁAD:

Konfigurowanie WebView

// inicjalizacja WebView

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

Ładowanie HTML w WebView

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

Ustawienie WebChromeClient do Webview

webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

Klasy MyJavaScriptChromeClient Tutaj musimy nadpisać metodę onJsAlert(), aby obsłużyć funkcję alertu 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; 
    } 
} 

Mój plik HTML: testhtml.html:

<html> 

    <body > 

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

    </body> 

</html> 

Jak to działa? Kiedy tekst "Kliknij mnie!" na kliknięciu WebView wywoływana jest funkcja Android onJsAlert (widok WebView, URL String, komunikat String, wynik końcowy JsResult). Parametr ostrzeżenia jest kopiowany do parametru komunikatu funkcji onJsAlert. Reszta obsługi jest tam wykonywana. Tutaj wyświetlamy AlertDialog.

10

W przypadku ktoś ma jakieś problemy z tym jak ja, trzeba zadzwonić do funkcji javascript po stronie zakończeniu ładowania inaczej javascript nie będą o nazwie:

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

     public void onPageFinished(WebView view, String url) 
     { 
      webviewer.loadUrl("javascript:hello()"); 
     } 
    }); 
Powiązane problemy