J'essaie d'injecter une fonction JavaScript globale dans une vue Web avant le chargement de la page. J'ai une fonction appelée testJS
que je suis en train d'injecter. Dans mon WebViewClient, je fais ce qui suit
private String getJS() {
return "javascript:function testJS() { return { test: 'Hello World' };}";
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.loadUrl(getJS());
}
Quand j'inspecte la page, window.testJS
est indéfinie.
Si je fais ce qui suit, window.testJS
a la bonne fonction dans le webview mais il n'est pas chargé assez tôt et ne fonctionne donc pas correctement.
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl(getJS());
}
Dans iOS, je pourrais faire l'équivalent en injectant un script. atDocumentStart
et ça fonctionne comme je l'attends.
let userScript = WKUserScript(
source: scriptContent!,
injectionTime: WKUserScriptInjectionTime.atDocumentStart,
forMainFrameOnly: false)
contentController.addUserScript(userScript)
Existe-t-il un autre moyen de réaliser cela dans une WebView Android ? Cela fonctionne surPageFinished mais pas surPageStarted.