我有一个WebView,它在一个安卓按钮的点击加载一些JavaScript到WebView中。
我的问题是,当一个Android变量被加载时,我该如何将它传递给JavaScript。
将JavaScript加载到WebView中的当前代码
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 initialize()
传递一些东西。
发布于 2013-09-25 19:55:13
首先,您只需要加载脚本一次( onClick
每次都会加载它),然后调用loadUrl("javascript:initialize(" + myNumber + ");")
发布于 2016-03-19 00:42:53
Java类:
public class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public String getFromAndroid() {
return "This is from android.";
}
}
Webview代码:
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>
发布于 2015-05-22 04:49:54
对我有效的正确语法是
StringBuilder buf=new StringBuilder("javascript:testFunction('"+bar+"','"+foo+"')");
Log.d(TAG, "returned string:"+buf.toString());
mWebView.loadUrl(buf.toString());
https://stackoverflow.com/questions/19001500
复制相似问题