ページが読み込まれる前にグローバルJavaScript関数をWebビューに挿入しようとしています。私は私が注射だとtestJS
と呼ばれる機能を持っている。私はページを閲覧すると、私のWebViewClientで、私は次のようページの読み込み時にWebViewにjavascript関数を挿入
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 WebViewで実現できる別の方法はありますか?これはPageFinishedでは動作しますが、onPageStartedでは動作しません。
有効です。それは問題ではありません。問題はJavaScriptがonPageStartedから正しくロードされていないことです。 – kittels
私は私の答えを更新しました。それを試してみてください –
JavaScriptはどこに行きますか?とにかくjavacript関数をロードするだけの場合、インターフェイスのポイントは何ですか – kittels