【问题标题】:Android Webview : Cannot call JS function from Java CodeAndroid Webview:无法从 Java 代码调用 JS 函数
【发布时间】:2015-10-26 13:29:58
【问题描述】:

我有以下带有界面的 webview:

 public void setWebview() {
        try {
            mWebView = (WebView) findViewById(R.id.intro_browser);
            // Set Chrome instead of the standard WebView
            mWebView.setWebChromeClient(new WebChromeClient());
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setAllowFileAccess(true);
            mWebView.getSettings().setAllowFileAccessFromFileURLs(true);
            mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
            mWebView.clearCache(true);
            mWebView.clearHistory();
            mWebView.getSettings().setAllowContentAccess(true);
            mWebView.getSettings().setBlockNetworkImage(false);
            mWebView.addJavascriptInterface(new WebViewInterface(), interfaceName);
            mWebView.loadUrl("file:///android_asset/www/my_access.html");
            mWebView.loadUrl("javascript:toBeCalledFromAndroid()");
        } catch (Exception e) {
            Log.d("TEST", e.getMessage());
        }

    }

我可以通过 JS 调用 Java 本机代码,但我还需要通过 Java 代码调用 JS 函数以将一些数据传递到 webview。

所以我尝试添加:

mWebView.loadUrl("javascript:toBeCalledFromAndroid()");

静态页面内容加载后。

但它不起作用:

HTML

<head>
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0">
    <link rel="stylesheet" href="css/bootstrap-combined.min.css">
    <link rel="stylesheet" href="css/styles.css">
    <script src="libs/jquery-1.9.1.min.js"></script>
    <script src="libs/jquery-migrate-1.2.1.min.js"></script>
    <script src="libs/jquery.dataTables.min.js"></script>
    <script src="libs/FixedColumns.js"></script>
    <script src="libs/angular.min.js"></script>
    <script src="js/app.js"></script>
    <script src="js/init.js"></script>


</head>
</html>

app.js

function toBeCalledFromAndroid() {
        alert("TEST");
    }

我应该如何更新我的代码以将数据从 Java 传递到 JS?

非常感谢您的建议。

【问题讨论】:

  • 首先,尝试这样的事情: mWebView.loadUrl("javascript:console.log('从 JAVA 调用');");并查看 logcat

标签: javascript java android webview


【解决方案1】:

解决方法如下:

我打电话给我的第二个loadUrl() 太快了,loadUrl() 是异步的。所以我需要等到页面加载完毕。

OnPageFinished 方法中调用webView.loadUrl("javascript: toBeCalledFromAndroid('test')"); 解决了我的问题。

【讨论】:

    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多