我在html文件中放了一个高图表,并将其加载到webview中。我做了一个名为set_needle()的函数,它将针设置为某个值。但是当我尝试在Java中加载对该函数的javascript调用时,没有任何反应。我看了几个例子,他们在我看来正在做我自己的事情,所以我不确定问题是什么。
这是html / js:
{{1}}
以下是相关的java代码:
{{1}}
答案 0 :(得分:0)
这是一个示例界面:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
将它连接到WebView,如下所示:
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
Android
是javascript对象的名称,因此您可以通过javascript调用它:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
@JavascriptInterface
注释很重要;如果您没有,则无法从javascript调用该方法。
答案 1 :(得分:0)
由于您在html页面加载url指令之后立即调用JavaScript函数,因此在尝试执行JavaScript时页面可能未完全加载,从而导致错误。
如果是这种情况,我建议推迟对自定义WebViewClient的onPageFinished回调的myWebView.loadUrl("javascript:set_value(50)");
指令。类似的东西:
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:set_value(50)");
}
});