加载网页后尝试从Android调用Javascript函数会给出错误:"Uncaught ReferenceError: myFunction is not defined"



<!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。

相关内容

最新更新