【发布时间】:2011-05-18 13:26:07
【问题描述】:
我正在尝试调用一些位于 html 页面中的 javascript 函数,该页面在 android webview 中运行。下面的代码尝试执行的操作非常简单 - 从 android 应用程序调用带有测试消息的 javascript 函数,该函数又在通过 toast 显示测试消息的 android 应用程序中调用 java 函数。
javascript 函数如下所示:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
在 WebView 中,我尝试通过以下方式调用 javascript,但没有成功:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
我确实在 WebView 上启用了 javascript
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
这是 Java 类
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
我花了很多时间在谷歌上搜索,看看我可能做错了什么。我发现的所有示例都使用这种方法。有人看到这里有问题吗?
编辑:在 html 中引用和使用了其他几个外部 javascript 文件,它们可能是问题吗?
【问题讨论】:
-
您尝试使用的代码在 javascript 端缺少引号。
-
请注意,从 Android 4.2 开始,您需要在您希望通过 JavaScript 接口提供给 WebView 的 Java 方法上使用
@JavascriptInterface装饰器。 -
从代码
myWebView.loadUrl("javascript:testEcho('Hello World!')");我了解到您已经将 html 文件附加到该 web 视图。你能告诉我你是怎么做到的吗?
标签: javascript android webview android-webview