首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将变量从Android传递给在WebView中启动的JavaScript

将变量从Android传递给在WebView中启动的JavaScript
EN

Stack Overflow用户
提问于 2013-09-25 17:46:34
回答 5查看 21.2K关注 0票数 9

我有一个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()传递一些东西。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-25 19:55:13

首先,您只需要加载脚本一次( onClick每次都会加载它),然后调用loadUrl("javascript:initialize(" + myNumber + ");")

票数 9
EN

Stack Overflow用户

发布于 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>
票数 13
EN

Stack Overflow用户

发布于 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());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19001500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档