页面重新加载 (Webview.loadUrl) 导致 Javascript 未(完全)处理

发布于 2024-11-13 12:17:15 字数 897 浏览 2 评论 0原文

当将以下技巧放在 WebViewPictureListeneronNewPicture() 中时,在 javascript 呈现后获取页面 HTML 内容的效果非常好>:

browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 

但是,由于某种原因,它仅在第一次加载页面时起作用。也就是说,应用程序的第一个此类 WebView.loadUrl() 调用将获取页面的完全呈现版本。

此后,如果我重新加载/刷新页面(完全相同的 URL),HTMLOUT.showHTML() 的输出将显示为页面呈现之前的原始 HTML+javascript 。

奇怪的是,视觉上,在 WebView 本身上,所有内容都在那里! (尽管经过了明显的延迟……我可以看到 WebView 的沙漏在旋转,也许重新处理 Javascript 需要太长时间?)

这似乎表明存在初始化问题(在我的代码中)、WebView 中的错误,或者一些经验丰富的网络程序员都知道但我还不熟悉的缓存原理。

但接下来的事情就变得更有趣了:对 WebView.loadUrl() 的后续调用会导致上述失败多次(3-10)次,直到......页面奇迹般地完全呈现! (然后再次多次失败,依此类推)

这可能表明计时问题?

关于如何调试或解决此问题有什么建议吗?

The following trick for getting page's HTML content after javascript has been rendered works pretty well, when placed in the onNewPicture() of a WebView's PictureListener:

browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 

However, for some reason it works only the first time the page is loaded. That is, the application's first such WebView.loadUrl() call gets a completely rendered version of the page.

Thereafter, if I reload/refresh the page (same exact URL), the output of HTMLOUT.showHTML() appears to be the original HTML+javascript before the page was rendered.

The strange thing is that visually, on the WebView itself, all content is there! (albeit after a significant delay... I can see the WebView's hourglass spinning, perhaps it takes too long for Javascript to be re-processed?)

This seems to suggest either an initialization problem (in my code), a bug in WebView, or some caching principle that is well known to experienced web programmers but with which I am not familiar with yet.

But then it gets even more interesting: Subsequent calls to WebView.loadUrl() result in the aforementioned failure multiple (3-10) times until... the page is miraculously fully rendered again! (and then multiple failures again, and so on)

Which may suggest timing problem?

Any suggestion on how to debug or troubleshoot this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别低头,皇冠会掉 2024-11-20 12:17:15

你必须在页面加载后注入 JavaScript!我花了很长时间才弄清楚

you have to inject the javascript after the page loads! Took me forever to figure it out

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文