2015-11-06 2 views
-1

У меня есть файл с функциями js, которые мне нужно вводить в веб-просмотр, но, похоже, я не могу найти правильный способ сделать это. Как я узнал до сих пор, мне нужно вставить js, установив setWebViewClient в webview, и на onPageFinished там вводят js, делая это: webview.loadUrl("javascript:" + js); Теперь мой вопрос: правильно ли это и правильно ли я могу получить возвращаемое значение функцию javascript, которую я выполняю?Inject javascript in webview

Благодаря

ответ

3

является правильным выше

loadUrl() подход является правильным для уровня API 18 и ниже. evaluateJavascript() был добавлен в API уровня 19 в качестве альтернативы.

Признать ли этот код кодом onPageFinished() нужное время, мы не можем сказать.

Как я могу получить возвращаемое значение функции javascript, которую я выполняю?

Используя loadUrl(), вы не получите возвращаемое значение, по крайней мере, не напрямую. Вам нужно будет использовать addJavascriptInterface() на WebView, чтобы зарегистрировать поддельный JS-глобальный, который отображает некоторый объект Java, который вы поставляете, и попросите JavaScript вызвать какой-либо метод на этом глобальном, чтобы передать данные обратно из WebView.

С evaluateJavascript() вы можете передать объект обратного вызова, который получит представление String того, что возвратили JS, если что-нибудь.