javascript - 从 Android 的 webview 中调用 Javascript 方法

标签 javascript android html webview

我正在尝试从 webview 中调用在 html 页面中定义的 javascript 方法。未调用函数,并且我在日志中没有看到任何错误。

这是 html 文件。

    </head>
    <body>
    <script type="text/javascript">
        function callJS(){
            $.ajax({url:"http://10.0.2.2:5010"});
        }
    </script>
    </body>
    </html>

这是android中Activity中的Java代码

    WebView webView = new WebView(this);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("file:///android_asset/temp.html");
    webView.loadUrl("javascript:callJS()");

不确定如何调试它。当我在 html 的 body 标记中添加 onload=callJS() 时,我看到正在进行远程调用。所以,看起来我的 HTML 没问题,它正在加载到 webview 中。但是,webview 无法直接调用 javascript 方法。

最佳答案

您应该在页面加载时执行 javascript 函数

webView.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {
        webView.loadUrl("javascript:callJS()");
    }
});

当你放置 onload=callJS() 意味着当页面加载时将调用 javascript 函数。 对于调试,您可以将 console.log("your text here") 放入您的 javascript 函数中,您将在 android studio 日志中获取它。 (通常使用标签 I/chromium)。否则,您可以在 Android 和 Chrome 上使用远程调试。这里的文档 https://developer.chrome.com/devtools/docs/remote-debugging .

关于javascript - 从 Android 的 webview 中调用 Javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906557/

相关文章:

javascript - 为什么我的按钮不隐藏? (JavaScript 函数/CSS 可见性)

javascript - 如何制作一个js数组列表,一一打印出来?

javascript - 相互使用 Razor 和 javascript

javascript - 在 Next.js 中导入 react-hook-mousetrap 时出现 "Cannot use import statement outside a module"错误

java - 如何修复 java.util.concurrent.ExecutionException :

java - 错误 :Execution failed for task ':app:processDebugManifest' . list 合并因多个错误而失败,请参阅日志

android - Android Wear的DataItem使用方法

html - Opera (11.0) 中的水平滚动条

javascript - 解析.com : Default parameters to identify user?

javascript - 仅针对主页