如何在 JavaFX WebView 中延迟加载尚未下载的图像?

How do I lazy load images I haven't downloaded yet in JavaFX WebView?

我正在制作一个使用 JavaFX WebView 显示电子邮件 HTML 文件的电子邮件客户端。为了使其具有响应性和快速性,我想让内联图像在本地下载时显示在电子邮件中。我查找了执行此操作的选项,然后遇到了延迟加载的概念。到目前为止,我已经找到并尝试实现这个 script:

<script>
window.addEventListener('load', function(){
    var allimages= document.getElementsByTagName('img');
    for (var i=0; i<allimages.length; i++) {
        if (allimages[i].getAttribute('data-src')) {
            allimages[i].setAttribute('src', allimages[i].getAttribute('data-src'));
        }
    }
}, false)
</script>

我会检查文件,将 srcs 更改为假名称,adding/replacing data-src 来自每个 img 元素都是正确的 path/name,最后将脚本附加到 body 元素的末尾。

我对 HTML 的基础还很陌生,而且 JS 不是用来显示错误日志的,所以我不确定我做错了什么。我的猜测是脚本 在一定程度上正常工作,但当图像从在线 src 流式传输时效果最佳。在 HTML 加载到视图后的某个时间之前,我的情况是文件甚至不存在于某个位置。

如果这无法实现,我知道我可以通过 Java 对 WebView 进行编码,以便在每次图像下载完成时重新加载。我只是希望找到更多 elegant/potentially 对用户不那么刺耳的东西。

我找到了解决方案并已发布 here

事实证明,延迟加载并不是我想要的。延迟加载只是稍后加载图像,以便页面可以显示。我的问题是处理加载失败,延迟加载没有考虑到这一点。我会把它标记为重复,但我会保留这个问题的标题未经编辑,这样其他人就有更好的机会找到它。