我正在 WebView 中加载网页并尝试订阅 JS 事件。例如,假设我正在寻找窗口“加载”事件。
我在其中配置 webview onFinishInflate
:
webView.setJavaScriptEnabled(true);
webView.loadUrl("javascript:window.addEventListener('load', function(){alert('loaded');})");
我假设此注册在页面导航中持续存在,并且可以在实际加载任何页面之前进行(由于在 上完成window
)。
加载之后的任何 url 时,例如webView.loadUrl("https://www.google.com")
,不显示任何警报。
我还尝试在 Web 视图客户端的onPageStarted
&中将该 javascript 字符串作为 url 加载onPageFinished
。没有不同。
是否可以订阅 Web 视图的窗口事件?最终,我计划在@JavascriptInterface
JS 事件发生时使用该模式回调到本机代码。我想避免让网页本身知道注入的 Java/JS 对象(在调用它的方法之前必须验证这个桥对象的存在似乎很草率——我在这里找到了事件总线模式清洁器)。