2011-12-28 42 views
8

我想知道是否有任何方法可以從本機Android活動調用JavaScript函數。如何直接從Android中的活動調用JavaScript函數?

我碰到:

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

但它沒有爲我工作。

此外,Android將如何知道JavaScript函數駐留在哪個html頁面?

+0

PLZ也投了我的回答... :) – Talha 2012-08-02 04:28:41

回答

13

的Android只能調用JavaScript方法如果HTML頁面在web視圖當前加載

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

將調用hello方法在僅噹噹前被加載到web視圖控制含有該方法中,頁面的HTML頁面writen

第一個電話

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

然後調用

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

我已經啓用了答案1和2中所述的一切。但沒有任何工作。 – Smitha 2011-12-28 10:47:59

+0

請在瀏覽器上檢查您的html頁面,並檢查您的html頁面上是否有任何錯誤javascript ... – Talha 2011-12-29 04:26:28

+0

解決方案在javascript方法中的參數沒有問題。好一個。 – Krystian 2016-12-29 14:57:00

3

使用JavaScript之前,首先必須使用「getJavaScriptEnabled()」(它的默認FALSE)檢查Javascript是否已啓用。而loadUrl()方法僅用於僅加載當前頁面。它不會執行與JavaScript相關的任何操作。

例:

設置的WebView

//網頁流量的初始化

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

在WebView中加載HTML

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

設置WebChromeClient到webView的

webView.setWebChromeClient(new MyJavaScriptChromeClient()); 

MyJavaScriptChromeClient類 這裏我們必須重寫onJsAlert()方法來處理JavaScript Alert函數。

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

我的HTML文件: testhtml.html:

<html> 

    <body > 

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

    </body> 

</html> 

如何運作? 當文字「Click Me !!」在WebView上單擊,調用android函數onJsAlert(WebView視圖,String url,String消息,最終的JsResult結果)。要提醒的參數被複制到onJsAlert函數的消息參數。其餘的處理在那裏完成。 這裏我們顯示一個AlertDialog。

10

如果任何人有任何使用問題,像我一樣,你需要打電話給你的javascript函數的頁面加載完成,否則的JavaScript將不會被調用後:

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

     public void onPageFinished(WebView view, String url) 
     { 
      webviewer.loadUrl("javascript:hello()"); 
     } 
    }); 
相關問題