【问题标题】:Android WebView inject JavaScript between onPageStarted and onPageFinishedAndroid WebView 在 onPageStarted 和 onPageFinished 之间注入 JavaScript
【发布时间】:2014-08-15 16:54:12
【问题描述】:

我需要将一些 JavaScript 注入到我正在加载到 WebView 的网页中,但是在 onPageFinished 注入它为时已晚,而 onPageStarted 则为时过早。有什么办法可以在这两个事件之间注入它?

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progress.setVisibility(view.GONE);
        view.loadUrl("javascript:registerObjectDetailsCallback(" +
                                    "function(details) {" +
                                        "if (details.length == 1) {" +
                                            "window.location.href = 'callback:' + escape(details[0]);" +
                                        "} else if (details.length > 1) {" +
                                            "alert('Error: callback set by registerObjectDetailsCallback was passed multiple selection');" +
                                        "}" +
                                    "}" +
                                ");");
        Log.d("onPageFinished: ", "JavaScript registered.");
    }
}

【问题讨论】:

  • 从安卓注入代码?
  • @DIVA 是的,所以我帖子中的代码将由 android 应用程序运行。
  • 我无法理解 loadUrl 的参数?它无效
  • @DIVA 是的,它只是运行了一点 JavaScript。与在浏览器地址栏中输入相同javascript:alert('hello')
  • 好的,你能把你的演示项目发给我吗,因为它很小,我可以尝试一下

标签: java javascript android webview


【解决方案1】:

我最终没有最终使用它,我想出了一个更好的解决方案 - 但你可以做的是使用WebChromeClient 中的onProgressChanged 方法,以便在加载的某些阶段执行操作。

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int progress) {
        // Do something cool here
    }
});

【讨论】:

  • 嗨,我也在为这个问题苦苦挣扎,通过在 onPageFinish 旁边的其他地方注入 js,你说你有一个更好的解决方案,除了你发布的这个之外还有其他的东西吗(我的意思是做它在 onProgressChanged 上),抱歉不能安静地解释问题,因为我不是英语的母语
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多