“未捕获的TypeError:window.HTMLOUT.showHTML不是函数”

问题描述 投票:5回答:2

我正在尝试注入JavaScript以在加载webView时读取特定值。

这些是我用于webView的属性。

    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setCacheMode(2);
    webView.getSettings().setDomStorageEnabled(true);
    webView.clearHistory();
    webView.clearCache(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setUseWideViewPort(false);
    webView.getSettings().setLoadWithOverviewMode(false);
    webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

并且我正在onPageFInished()方法中注入javacript。

        @Override
        public void onPageFinished(final WebView view, final String url) {
            webView.post(new Runnable() {
                @Override
                public void run() {
                    webView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('input')[0].value+'</head>');");   
                }
            });
            super.onPageFinished(view, url);
        }

下面的代码是MyJavaScriptInterface

public  class MyJavaScriptInterface{

    @JavascriptInterface
    public void showHTML(String html_data) {
        if(html_data.contains("response_code")){
            Log.e(TAG, " ======>  HTML Data : "+  html_data);
            new MakeQueryPayment().execute();
        }        
    }
}

我从Logcat捕获的错误。

01-08 17:56:43.701 I/chromium(27026): [INFO:CONSOLE(1)] "Uncaught TypeError: window.HTMLOUT.showHTML is not a function", source:  (1)

仅在Samsung Galaxy Tab A]中遇到此问题,型号为SM-T550,Android版本为5.0.2。在我们拥有的其他设备中,它工作正常。谁能帮我这个忙。预先感谢。

我正在尝试注入JavaScript以在加载webView时读取特定值。这些是我用于webView的属性。 webView.getSettings()。setBuiltInZoomControls(true); ...

javascript java android android-webview
2个回答
3
投票

我尝试在Galaxy Tab 4上运行,此代码在此设备上运行良好。


0
投票

对我来说,在升级到最新的targetSDK之前,它工作正常,我只需要在所有功能上添加注释@JavascriptInterface

© www.soinside.com 2019 - 2024. All rights reserved.