我正在嘗試向已找到的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) –