Я загружаю веб-страницу в WebView и пытаюсь подписаться на события JS.В качестве примера, скажем, я ищу событие загрузки окна.
Я настраиваю веб-просмотр в его onFinishInflate
:
webView.setJavaScriptEnabled(true);
webView.loadUrl("javascript:window.addEventListener('load', function(){alert('loaded');})");
Я предполагаю, что эта регистрация сохраняется на страниценавигации и что это может быть сделано до того, как какая-либо страница действительно будет загружена (из-за того, что это было сделано на window
).
При загрузке любого URL, следующего за этим, такого как webView.loadUrl("https://www.google.com")
, не появляется никакого предупреждения.
Я также пытался загрузить эту строку JavaScript в качестве URL-адреса в клиенте веб-представления onPageStarted
& onPageFinished
.Без разницы.
Можно ли подписаться на события окна веб-просмотра?В конце концов я планирую использовать шаблон @JavascriptInterface
для обратного вызова нативного кода, когда происходит событие JS.Я бы не хотел, чтобы сама веб-страница знала об внедренном объекте Java / JS (необходимость проверки существования этого объекта-моста перед вызовом метода кажется небрежной - я нахожу здесь очиститель шаблона шины событий).