我正在尝试向已找到的WebView添加一个JavaScript接口。 我遵循所有的标准教程,仍然在与任务挣扎。 当添加JavaScript界面,我没有得到任何异常或错误,但显式调用JS从桥上时,我得到以下错误:addJavascriptInterface函数在API 21上不起作用
I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: JSNativeBridge is not defined", source: (1)
添加JavaScript接口:
new Handler(context.getMainLooper()).post(new Runnable() {
@Override
public void run() {
WebView webView = webViews[0];
if (Constants.DEBUG_MODE) {
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
}
ImpressionSyncJsInterface impressionSyncJsInterface = new ImpressionSyncJsInterface(context);
webView.addJavascriptInterface(impressionSyncJsInterface, JS_BRIDGE_NAME);
didAddInterfaceToWebView = true;
}
});
我的界面: 公开课ImpressionSyncJsInterface {0}私人最终上下文上下文;
public ImpressionSyncJsInterface(Context context) {
this.context = context;
}
@JavascriptInterface
public void foo() {
Log.e("TEST", "test");
}
}
JavaScript执行:
final String javascriptInjectionTest = "javascript: " + JS_BRIDGE_NAME + ".foo();";
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
webView.loadUrl(javascriptInjectionTest);
}
});
任何帮助将非常感激。
请把你的JavaScript调用Java类的JavaScript代码。 –
在尝试访问注入的对象之前,我没有看到任何代码加载页面。您需要首先加载一些页面,请参阅http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String) –