【发布时间】:2014-09-11 14:32:31
【问题描述】:
我有一个需要访问一些 Javascript 函数的 Android Webview 项目。我已经按照this 教程设置了所有内容。一切正常,我可以从 Android 应用程序加载 html,可以按照教程中描述的方法从 Javascript 调用 Android 类方法。
有一件事我无法完成,那就是从 Android 中的 Java 类调用 Javascript 函数。 Javascript 函数只是打印一条日志消息以供测试。
我的 index.html 包括 sample.js。这是 sample.js 文件:
(function () {
'use strict';
function init(event) {
function foo(){
console.log("javascript foo() function called from android");
}
}
window.addEventListener('load', init, false);
}());
function foo1(){
console.log("javascript foo1() function called from android");
}
并从 Java Webview 调用:
myWebView.loadUrl("javascript:foo1()"); //this works
myWebView.loadUrl("javascript:foo()"); //this gives error
如您所见,我在 Javascript 文件中创建了 2 个 foo 函数,它们的放置方式不同。调用 foo1() 有效,但调用 foo() 在 logcat 中显示此错误:
Uncaught ReferenceError: foo is not defined: Line 1 of file:///android_asset/index.html
我怀疑这是因为 foo() 在匿名函数内部。
谁能告诉我如何从 Android 调用 foo()?
谢谢。
【问题讨论】:
标签: java javascript android webview