将变量从android传递给javascript

时间:2014-08-30 02:53:59

标签: javascript android html

我在将数据/变量从android传递给javascript时遇到了问题。这是我的代码。

WebView webview = (WebView) findViewById(R.id.webview_graph);
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    String temp = "yoolod";
    webview.loadUrl("file:///android_asset/test.html");
    webview.loadUrl("javascript:sample(\""+temp+"\")");
test.html中的

<!DOCTYPE html>
<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

 function sample(var){ //this is line 10
       document.write (var);
       //echo var;
 }

</script>
</head>

<body>
</body>
</html>

我总是有这个,错误,但还没有找到解决方案。希望你能帮帮我。

“未捕获的ReferenceError:未定义样本”,来源:(1) “Uncaught SyntaxError:Unexpected token var”,source:file:///android_asset/test.html(10)

2 个答案:

答案 0 :(得分:0)

将值放入单引号中,下面我已更改您的代码,接受该代码并重试。

webview.loadUrl("javascript:sample('"+temp+"')");

我在edittext中设置了值(来自android)。

这样你就可以获得html中编辑文本的价值。

<强>的test.html

<!DOCTYPE html>
<html> 
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; user-scalable=0;" />
<script language="javascript">

 // getting Value from Android/ios
 function sample(temp){  
 var textcontrol = document.getElementById("txtname");
 textcontrol.value = temp;
 }

</script>
<title>My HTML</title>
</head>
<body >
<h1>My HTML </h1>
<br>
<input type="text" id="txtname" />
</body>
</html>

答案 1 :(得分:0)

搜索和试错后,我以某种方式找到了一种方法。我只是把loadurl放在我调用webview的onfinished中的函数的地方。

webview.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String loc) {
            view.loadUrl("javascript:sample('"+temp+"')");
        }
});