繁体   English   中英

在Android Kitkat中将javascript函数加载到webview

[英]Loading javascript functions to webview in Android Kitkat

我在将Android函数(在外部文件中)加载到Android Kitkat中的webview时遇到问题。 我对早期版本的方法是我实现了自己的webview客户端,并在我调用的onPageFinisned方法中

mWebView.loadUrl("javascript:" + functions);

后来,当我想调用一些js方法时,我会调用相同的代码,比如

mWebView.loadUrl("javascript:" + someFunction);

在android kitkat中有新方法evaluateJavascript,它用调用javascript函数替换我的代码。 我的问题是现在这个和旧方法抛出这个错误:

Uncaught ReferenceError: function is not defined

似乎问题在于将javascript函数加载到webview但我不知道如何以其他方式加载它。 谢谢

对我有用的是在<script>标签中的网页内部使用JavaScript函数:

<html>
<head>
<title>Android GeoWebTwo Demo</title>
<script language="javascript">
    function whereami(lat, lon) {
        document.getElementById("lat").innerHTML=lat;
        document.getElementById("lon").innerHTML=lon;
    }

    function pull() {
        var location=JSON.parse(locater.getLocation());

        whereami(location.lat, location.lon);
    }
</script>
</head>
<body>
<p>
You are at: <br/> <span id="lat">(unknown)</span> latitude and <br/>
<span id="lon">(unknown)</span> longitude.
</p>
<p><a onClick="pull()">Update Location</a></p>
</body>
</html>

然后,我可以成功使用evaluateJavascript()

public void onLocationChanged(Location location) {
  StringBuilder buf=new StringBuilder("whereami(");

  buf.append(String.valueOf(location.getLatitude()));
  buf.append(",");
  buf.append(String.valueOf(location.getLongitude()));
  buf.append(")");

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    browser.evaluateJavascript(buf.toString(), null);
  }
  else {
    browser.loadUrl("javascript:" + buf.toString());
  }
}

(这两个代码段都来自此示例应用

这适用于Android的新旧版本。 现在,就我而言,我的JavaScript碰巧搞乱了DOM,所以无论如何我都需要一个网页。 你的可能有一个空的<body> ,网页就在那里提供JavaScript函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM