android无法从Javascript运行Java函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android无法从Javascript运行Java函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2226字,纯文字阅读大概需要4分钟。
内容图文
在我的项目中,我有一个加载页面(HTML)的WebView.
我希望在用户点击任何图像时更改所有图像并显示祝酒词.
所以我添加了调用Java函数的javascript代码:
// code is inside onPageFinished(..) function
JavaScriptInterface jsInterface = new JavaScriptInterface(activity);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
webView.evaluateJavascript(
"var imgs = document.getElementsByTagName('img');" +
"for (var i = 0; i < imgs.length; i++) {" +
"imgs[i].src = 'file:///android_asset/rules_images_placeholder.png';" +
"imgs[i].addEventListener('click', function() {" +
"window.JSInterface.showToast(); " + // <-- isn't called: see logs
"});" +
"} " +
"window.JSInterface.showToast();" // <-- is called
, null);
JavaScriptInterface class:
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activity) {
this.activity = activity;
}
@JavascriptInterface
public void showToast() {
Toast.makeText(activity, "Toast message", Toast.LENGTH_SHORT).show();
}
}
应该在调用showToast()时调用
>页面已完成加载
>用户点击了图片
问题:showToast()只被调用一次 – 页面加载完成后.
当用户单击图像时,不会调用showToast(),而是显示以下日志:
Uncaught TypeError: Cannot read property ‘showToast’ of undefined”,
source:
题
如何在图像上单击调用showToast()?
解决方法:
我不确定原因,但您可以通过在加载HTML内容之前添加JavaScript接口来解决此问题.
jsInterface = new JavaScriptInterface(activity);
fragmentWebView.getSettings().setJavaScriptEnabled(true);
fragmentWebView.getSettings().setDomStorageEnabled(true);
fragmentWebView.addJavascriptInterface(jsInterface, "JSInterface");
fragmentWebView.loadDataWithBaseURL("file:///android_asset/", fullHtml, "text/html", "utf-8", null);
fragmentWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl(
"javascript:var imgs = document.getElementsByTagName('img');" +
"for (var i = 0; i < imgs.length; i++) {" +
"imgs[i].src = 'file:///android_asset/rules_images_placeholder.png';" +
"imgs[i].addEventListener('click', function(e) {" +
"window.JSInterface.showToast(); " +
"});" +
"}" +
"console.log(window.JSInterface);" +
"window.JSInterface.showToast(); ");
}
});
内容总结
以上是互联网集市为您收集整理的android无法从Javascript运行Java函数全部内容,希望文章能够帮你解决android无法从Javascript运行Java函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。