2013-09-25 31 views
6

我有一個webview,點擊一個Android按鈕將一些JavaScript加載到webview中。 我的問題是我怎麼去傳遞一個Android變量加載JavaScript時。在android中傳遞變量從android到JavaScript在webview中啓動

我當前的代碼的JavaScript加載到web視圖

private OnClickListener OnClick_grabit = new OnClickListener() { 
     public void onClick(View v) { 
      webView.loadUrl("javascript: function loadScript(scriptURL) { 
       var scriptElem = document.createElement('SCRIPT'); 
       scriptElem.setAttribute('language', 'JavaScript'); 
       scriptElem.setAttribute('src', scriptURL); 
       document.body.appendChild(scriptElem); 
       } loadScript('http://www.pathtojavascript/javascript.js');"); 
     } 
    }; 

,所以我需要的東西從Android的傳遞到JavaScript的初始化()。

+0

位於資產的腳本?或者你需要從網絡上加載它? – gunar

+0

@gunar從網上加載 –

+0

而網頁也是從網上加載的? – gunar

回答

5

首先你需要加載腳本只有一次的(你onClick每一次都被加載它)然後調用loadUrl("javascript:initialize(" + myNumber + ");")

+0

那簡單嗎? :) – gunar

+0

你能擴大你的答案嗎? –

0

你需要在你的web視圖來使用loadURL,我得到了我以前的應用程序是這樣的:

webView.loadUrl("javascript:wrapJS.functionName("+value+","+value+")"+); 
2

爲我工作的正確語法是

StringBuilder buf=new StringBuilder("javascript:testFunction('"+bar+"','"+foo+"')"); 
Log.d(TAG, "returned string:"+buf.toString()); 
mWebView.loadUrl(buf.toString()); 
+0

如果'bar'或'foo'包含'''? –

+0

我的一天搜索結束於此..真是與其他人相比最好的答案 –

4

的Java類:

public class JavaScriptInterface { 
    Context mContext; 
    JavaScriptInterface(Context c) { 
     mContext = c; 
    }  
    @JavascriptInterface 
    public String getFromAndroid() { 
     return "This is from android."; 
    } 
} 

網頁視圖代碼:

WebView webView = (WebView) findViewById(R.id.webview); 
webView.setWebChromeClient(new WebChromeClient() {}); 
WebSettings settings = webView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setDomStorageEnabled(true); 
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 

HTML和JavaScript:

<input type="button" value="Get from android" onClick="getFromAndroid()" /> 
<script type="text/javascript"> 
    var myVar = null; 
    function getFromAndroid() { 
     myVar = Android.getFromAndroid(); 
     alert(myVar); 
    } 
</script> 
+0

對Android 5無法正常工作。 –

+1

這是傳遞信息的最佳方式。 – MurifoX