<!doctype html>
<head>
<meta charset="utf-8">
<meta name="author" content="Paul Lewis" />
<meta name="viewport" content="width=device-width">
<title>NEW ONE</title>
<style>
html, body {
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<div id="container"></div>
<script type="text/javascript" src="three.js-master/build/three.js"></script>
<!-- <script src="threejs/js/JSONLoader.js"></script>
-->
<script type="module" src="three.js-master/src/loaders/ObjectLoader.js"></script>
<script type="module" src="three.js-master/src/helpers/GridHelper.js"></script>
<script type="module" src="three.js-master/src/loaders/JSONLoader.js"></script>
<script type="text/javascript" src="three.js-master/examples/js/controls/OrbitControls.js"></script>
<script type="text/javascript">
function init()
{
function myFunction(data1,data2)
{
//Do things
}
}
window.onload = init;
</script>
</body>
</html>
我已经在Android的Web View中显示了网页。现在我想定期将数据传递给位于 html 页面中的 myFunction(( js 函数。我已经在webView中启用了javascript,在调用webView.loadUrl("http://XXXX/index.html");
后,我正在调用
js_interface=new WebInterface(this,webView);
webView.addJavascriptInterface(js_interface,"Android");
,以加载用于与 Javascript 函数交互的接口类。
网页界面.java:
公共类 WebModelInterface {
Context mContext;
WebView webView;
/** Instantiate the interface and set the context */
WebModelInterface(Context c, WebView webView) {
mContext = c;
this.webView=webView;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
Log.e("WebInterface","Called by JavaScript Code!!!");
}
public void setTarget(int finalI,double value){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("javascript:myFunction("+data1+","+data2+");",null);
}
else
webView.loadUrl("javascript:setJointPosition("+finalI+","+value+");");
}
}
我收到错误:Uncaught ReferenceError: setJointPosition is not defined
我还尝试从 chrome 控制台调用该函数,该函数给出了相同的错误。从脚本中调用函数时,它可以很好地执行。但是在加载页面并调用它后会出错。请帮忙。谢谢!
解决了!犯了一个愚蠢的错误,没有注意到JavaScript代码被包含在init((函数中。试图直接调用 myFunction,它在 init(( 之外不存在。因此,我删除了 init(( 函数,并能够从 Android 类中正确调用 myFunction。