[英]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.