在页面加载时将javascript函数注入WebView

在页面加载时将javascript函数注入WebView,javascript,android,webview,Javascript,Android,Webview,我试图在页面加载之前将全局JavaScript函数注入webview。我正在注入一个名为testJS的函数。在我的WebViewClient中,我执行以下操作 private String getJS() { return "javascript:function testJS() { return { test: 'Hello World' };}"; } @Override public void onPageStarted(WebView view, String url, B

我试图在页面加载之前将全局JavaScript函数注入webview。我正在注入一个名为
testJS
的函数。在我的WebViewClient中,我执行以下操作

private String getJS() {
    return "javascript:function testJS() { return { test: 'Hello World' };}";
}

 @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    view.loadUrl(getJS());
}
当我检查页面时,
window.testJS
是未定义的

如果我执行以下操作,
window.testJS
在webview中具有正确的功能,但它没有足够早地加载,因此无法正常工作

@Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl(getJS());
}
在iOS中,我可以通过注入脚本
atDocumentStart
来实现同样的效果,它的工作方式与我期望的一样

let userScript = WKUserScript(
        source: scriptContent!,
        injectionTime: WKUserScriptInjectionTime.atDocumentStart,
        forMainFrameOnly: false)
contentController.addUserScript(userScript) 

有没有其他方法可以在android网络视图中实现这一点?它可以在PageFinished上工作,但不能在PageStarted上工作。

首先尝试允许javascript作为设置功能:

WebSettings webSettings = yourWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
然后:

请参阅以下问题:


它已启用。这不是问题所在。问题是没有从onPageStarted正确加载JavaScript。我的JavaScript去哪里了?如果你只是加载一个javascript函数,那么界面的意义是什么?直到我没有问你。问题是在页面加载之前加载JavaScript。我能够在WebView中加载JS,但在呈现实际网页之前我需要它。我需要一个通过页面调用的注入JS函数。
yourWebView.addJavascriptInterface(new Object(){
       @JavascriptInterface
       public void test(){
           Log.d("JS", "test");
            }
   },"Android");
yourWebview.loadUrl("javascript:functionName(\"" + argument + "\")");