2011-12-28 17 views
8

Yerel Android Etkinliğinden bir JavaScript işlevi çağırabildiğim herhangi bir yol olup olmadığını öğrenmek istedim. Doğrudan Android'deki bir etkinlikten javascript işlevi nasıl çağrılır?

Ben rastladım:

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

Ama bu benim için işe yaramadı.

Ayrıca, Android bu JavaScript işlevinin hangi html sayfasında bulunduğunu nasıl bilecek? bir html sayfa şu anda Web görünümü yüklü ise

+0

plz da kadar oy benim cevap ... :) – Talha

cevap

13

yalnızca Android javascript yöntemini çağırabilirsiniz

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

arayacak merhaba bu yöntemi içeren sayfa şu anda webview kontrolünde yüklenen yalnızca html sayfası manzum yöntem

ilk çağrı

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

sonra çağrı

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

1 ve 2 numaralı yanıtlarda anlatılan her şeyi etkinleştirdim.Ama hiçbir şey işe yaramıyor. – Smitha

+0

tarayıcınızda html sayfanızı kontrol edin ve html sayfanızda herhangi bir hata olduğunu kontrol edin javascript ... – Talha

+0

Çözüm javascript yönteminde argümanlar ile sorunsuz çalışıyor. Güzel. – Krystian

3

JavaScript'i kullanmadan önce, önce Javascript'in etkinleştirildiğini veya uygulamanızda "getJavaScriptEnabled()" (Varsayılan FALSE) seçeneğini kullanmanız gerekir. Ve loadUrl() yöntemi sadece geçerli sayfayı sadece yüklemek için kullanılır. JavaScript ile ilgili hiçbir şey yapmaz.

ÖRNEK:

// Web görünümündeki başlatma

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

WebView'da Yükleme HTML

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

Ayar WebChromeClient Web görünümü

için WebView kurma
webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

MyJavaScriptChromeClient sınıfı Burada, JavaScript Uyarı İşlevini işlemek için onJsAlert() yöntemini geçersiz kılmak zorundayız.

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

Benim Html Dosya

: testhtml.html:

<html> 

    <body > 

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

    </body> 

</html> 

Nasıl Çalışır? "Beni tıkla!" WebView tıklandığında, android işlevi onJsAlert (WebView görünümü, String url, String mesajı, son JsResult sonucu) denir. Uyarılacak parametre onJsAlert işlevinin mesaj parametresine kopyalanır. Ve işlemin geri kalanı orada yapılır. Burada bir AlertDialog görüntülüyoruz.

kimse ben, sayfanın aksi javascript denilen olmayacak yüklenmesi tamamlandıktan sonra javascript işlevini çağırmak gerekir yaptığı gibi bu herhangi bir sorun olması durumunda
10

:

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

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