gpt4 book ai didi

javascript - 在页面加载时将 javascript 函数注入(inject) WebView

转载 作者:行者123 更新时间:2023-12-03 16:32:28 26 4
gpt4 key购买 nike

我试图在页面加载之前将全局 JavaScript 函数注入(inject)到 webview 中。我有一个名为 testJS 的函数我正在注入(inject)。在我的 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 中,我可以通过注入(inject)脚本来做同样的事情 atDocumentStart它按我期望的方式工作。
let userScript = WKUserScript(
source: scriptContent!,
injectionTime: WKUserScriptInjectionTime.atDocumentStart,
forMainFrameOnly: false)
contentController.addUserScript(userScript)

有没有另一种方法可以在 android WebView 中实现这一点?它适用于PageFinished 但不适用于onPageStarted。

最佳答案

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

WebSettings webSettings = yourWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

然后:
yourWebView.addJavascriptInterface(new Object(){
@JavascriptInterface
public void test(){
Log.d("JS", "test");
}
},"Android");
yourWebview.loadUrl("javascript:functionName(\"" + argument + "\")");

引用这些问题:

Android Calling JavaScript functions in WebView

Call javascript function in Android WebView

关于javascript - 在页面加载时将 javascript 函数注入(inject) WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43453112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com