gpt4 book ai didi

javascript - 将javascript函数加载到Android Kitkat中的webview

转载 作者:行者123 更新时间:2023-11-29 17:53:40 25 4
gpt4 key购买 nike

我在将外部文件中的 javascript 函数加载到 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 上,但我不知道如何以其他方式加载它。谢谢

最佳答案

对我有用的是将 JavaScript 函数放在网页中,在 <script> 中标签:

<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());
}
}

(两个代码 fragment 都来自this sample app)

这适用于新旧版本的 Android。现在,就我而言,我的 JavaScript 恰好与 DOM 发生冲突,所以无论如何我都需要一个网页。你的 <body> 可能是空的, 网页就在那里提供 JavaScript 函数。

关于javascript - 将javascript函数加载到Android Kitkat中的webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com