javascript - html 上的图像 - 缓存

标签 javascript html image

我有一个网页,其中有一个图像。但图像是在页面打开几秒钟后加载的。我想在图像尚未加载时显示加载gif,然后每2秒检查一次图像是否已加载。加载图像后,我想用图像替换加载 gif。我编写了以下代码:

    <script language="javascript" type="text/javascript">
        function checkImage(src) {
            var img = new Image();
            img.onload = function () {
                // code to set the src on success
                $('#img1').attr('src', 'imageOriginal.jpg');
                $('#img1').removeAttr('width');
                clearInterval(interval);
            };
            img.onerror = function () {
                countErrors = countErrors + 1;
            };

            img.src = src; // fires off loading of image
        }
        var interval;
        var countErrors = 0;
        $(document).ready(function () {
            $('#img1').attr('width', '620px');
            interval = window.setInterval(function () { checkImage('imageOriginal.jpg?id=' + countErrors); }, 2000);
        });
    </script>

                <img borderstyle="solid" bordercolor="black" borderwidth="1px" id="img1" alt="Screenshot" style="max-width:620px;" src="loading.gif" />

有时有效,有时无效。我什至添加了一个 id 参数来防止缓存。但即使图像已经加载,也会显示加载 gif。我该如何解决这个问题?

最佳答案

如果您的脚本中涉及 jQuery,我见过的一种方法是将 onload 事件附加到图像,与您所使用的类似,只不过 onload 事件在图像实际加载时触发。发生此事件后,您可以隐藏加载图像。我认为让加载图像成为其自己的单独图像并根据主图像是否加载来隐藏/显示它会更有意义。

示例:

$('#img1').load(function() {
    $('#loadingImage').hide();
    $('#img1').show();
});

无需定期进行此检查。加载事件只需要附加一次,并且会在图像加载完成时可靠地触发。

关于javascript - html 上的图像 - 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601623/

相关文章:

javascript - 转换 jQuery 计时器并重定向以使用分钟和秒,而不仅仅是秒

javascript - 显示带onclick能力的省略号只对长内容显示内容

确保日期有效的Javascript方法

html - 设置背景图片为透明色,并使图片高度适应内容

html - div 背景和媒体查询不适用于 chrome,但适用于 firefox + edge + opera + smartphone

java - 如何访问JAR文件中的资源?

image - 是否存在任何开源独立的 Restful 图像服务器?

CSS 和图像 - 为什么图片没有调整大小

javascript - 如何使用原型(prototype)检测 JavaScript 是否被禁用?

Javascript 命名跳转到 anchor