javascript - 在 android kitkat 中调用 javascript 函数

标签 javascript android android-4.4-kitkat

自从将我的 nexus 4 升级到 Android kitkat 后,我​​的应用程序停止工作。我在 webview 中使用 javascript 方法,但现在我的方法没有被调用。这就是我设置 webview 和加载我的 javascripts 的方式:

 mWebview.getSettings().setJavaScriptEnabled(true);
 JavaScriptInterface jsi = new JavaScriptInterface(mCtx);
 mWebview.addJavascriptInterface(jsi, ANDROID_BRIDGE);
 mWebview.setWebViewClient(new WebClient());
 mWebview.setWebChromeClient(new OwnChromeClient());
 mWebview.setWebContentsDebuggingEnabled(true);
 mWebview.loadUrl("about:blank"); //load dummy url to onPageFinished called in webViewClient

和我的网络客户端:

public class WebClient extends WebViewClient {


        @Override
        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {
            Log.e(WebClient.class.getSimpleName(), description + " code "
                    + errorCode);
        }

        /**
         * Load javascript into webview
         */
        @Override
        public void onPageFinished(WebView view, String url) {
            ECalcMarblesWrapper wrapper = new ECalcMarblesWrapper(mCtx);
            String javascripts = wrapper.getJavascripts();

            String content = String.format(jsHtmlContainer, javascripts,
                    jsHelpFunctions);

            view.loadUrl("javascript: " + content);
        }
    }

所有加载方法都被调用但是当我调用任何 javascript 方法时,这个错误被打印到控制台:

Uncaught ReferenceError: initForm is not defined

其中 initForm 是我的 javascript 方法。

在 api 18 上应用程序运行良好,我的方法中有 javascript 注释

最佳答案

如果应用程序的目标版本设置为 17 或更高,您需要在要导出到 Web View 的每个方法上方添加注释 @JavascriptInterface

关于javascript - 在 android kitkat 中调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21134097/

相关文章:

android - android 4.4 中的字体问题

Android Studio 无法在设备 : stuck on "Waiting for process: <project>" 上运行应用程序

javascript - Angular 1.6.3 不允许 1.5.8 中允许的 JSONP 请求

javascript - 带有 Bootstrap Popover 内容的 jQueryvmap

javascript - IE 和 Edge 中表格数据中出现奇怪的 V 形

android - 如何在Android中创建一个文件,将其保存在Download文件夹中,并在通知栏中显示文件下载通知?

c# - silverlight 3.0与winforms的通信

java - Android:在 Maven 上找不到 GA 库

android - Android 中 Cocos2d-X 的 TDD

Android 自定义启动器不会停止 BootAnimation