Как установить свойство окна в веб-представлении перед загрузкой страницы? - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно, чтобы объект window моего веб-просмотра был установлен с

nativeBridge = { version: "app/Android" }

Когда страница отображается, js пытается прочитать window.nativeBridge.version и должен получить app/Android в качестве ее ценность. До сих пор я пробовал два решения, ни одно из них не работало:

1 / При первой загрузке страницы

loadDataWithBaseURL(
    "dummyUrl.com",
    """
        <script type='text/javascript'>
            window.nativeBridge = { version: "app/Android" };
            window.location.replace("${client.url}");
        </script>
    """.trimIndent(),
    "text/html",
    "utf-8",
    null
)

2 / Я использую WebViewClient в своем веб-просмотре, поэтому я переопределили эти два

override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
    view.loadUrl("""
        javascript:(function() {
             window.nativeBridge = { version: "app/Android" };
             console.log("onPageStarted: " + window.nativeBridge.version);
        })()
        """.trimIndent())
    }

override fun onPageFinished(view: WebView, url: String) {
    view.loadUrl("""
        javascript:(function() {
            console.log("onPageFinished: " + window.nativeBridge);
        })()
    """.trimIndent())
}

Сообщение об ошибке консоли: "onPageFinished: [object Object]", source: (1)

Что нужно сделать, чтобы убедиться, что объект window установлен правильно?

Примечание: client.url вызывает несколько переадресаций, я не знаю, изменит ли это что-либо.

...