在OnPageStarted上调用js有时在可重用的WebView中不起作用

时间:2018-01-03 17:43:04

标签: android webview android-webview chromium

我已经实现了可重用的WebView。当我使用WebView时,我从池中获取WebView。使用后,清除WebView(重置设置,加载about:blank并清除历史记录)并返回池中。

在我的代码中,我需要在OnPageStarted上调用一些j。

但是当我使用重复使用的WebView(当前显示about:blank页面)来加载网址时,js有时会在about:blank调用,而不是在我的页面调用。

我致电javascript:console.log(window.location.href),它显示about:blank。这是否意味着当我在OnPageStarted上调用我的js时,DOM还没准备好?我应该什么时候打电话给我?

如何处理?

2 个答案:

答案 0 :(得分:0)

在页面加载完成之前,不保证加载WebView中的JavaScript。 最好在onPageFinished中调用您的JavaScript。

或者,如果您使用的最小api为23,则可以使用onPageCommitVisible()。

答案 1 :(得分:0)

花了很多时间尝试在自己的应用程序中重现此错误(因为它并没有始终如一地出现),我最终为onPageCommitVisible添加了一个计时器,该计时器在onPageFinished之前或之后不久被调用。对我来说似乎很可笑,但我证实此修复程序有效。

以下是您感兴趣的代码:https://github.com/TomTasche/OpenDocument.droid/commit/c14efd6b4adfaed56150c886b4384e03209e67af