在显示页面之前使用jquery ajax加载图像和声音

梅维亚

因此,我开始了这个小项目,即网络应用程序,该应用程序使用了大量的小图像和一些mp3声音,但随着用户发现新的“地点”,随着时间的推移会加载新的图像和声音,我感到不满意,因此我想出了解决$.ajax GET方法使用方法来加载所有图形和声音,然后在所有准备就绪时显示页面。这是代码:

    var i;
    for(i = 0; i < this.imagesNumber; i = i + 1) {
        (function(i) {
            $.ajax({
                url: self.images[i], // for example 'images/arrow.png'
                type: 'GET',
                complete: function(data) {
                    console.log("Completed.", i, self.images[i]);
                },
                progress: function(event) {
                    if (event.lengthComputable) {
                        console.log("Loaded " + parseInt( (event.loaded / event.total * 100), 10) + "%");
                    } else {
                        console.log("Length not computable.");
                    }
                }
            });
        }(i));
    }

然后我做:

this.loadAssets();
$(window).load(function() {
    app.initialize();
});

它确实是在下载所有内容,但是当我尝试使用页面上的某些元素时,它们中的一些又会继续下载(只有某些是从缓存加载的。要检查我是否从google chrom网络标签中监视所有内容)。

那么,jQuery内部资产调用和我的Ajax调用之间有什么区别?我错过了什么?

伍迪·佩恩(Woody Payne)

几周前我在玩纸牌游戏时也遇到了同样的问题。问题在于某些浏览器如何处理通过异步方式加载的图像的缓存。我可以在笔记本电脑上的Firefox中复制此问题,但不能在PC上复制。我不确定实际的问题是什么,但是我知道如何用创可贴修复它。

只需将图像或资产的加载移动到主Javascript文件中即可。这些文件在页面生成时加载,并存储在缓存中页面的相应本地副本中。但是,通过Ajax缓存的文件并不总是与当前页面保存在同一位置,这取决于加载时间。我相信这是导致此异常行为的关键设置,因为它会因系统的不同而有所不同,具体取决于使用不同浏览器,不同缓存积极性等的设置。任何与页面一起保存在缓存中的文件都会立即加载(按预期方式),但保存的所有文件页面所归属的属性将应要求重新加载。如果这些后续重新加载再次保存在不同的位置,则必须有效地一次又一次地重新加载这些文件。

因此,您通过Ajax调用加载的所有文件,都将它们全部加载到主Javascript中,而没有Ajax调用。对于您的迷你游戏,这是可以的,因为用户将期望加载期。只要确保他们知道事情正在发生,就不会造成任何伤害。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在页面加载之前显示图像

在通过jquery或ajax加载内容之前显示加载图像

异步预加载 css 图像和声音

在加载页面之前显示LightBox(或任何JQuery Modal弹出窗口)

在React中显示页面之前如何加载所有图像?

使用jquery / ajax加载php页面以打开特定链接以显示Div中的页面

通过jQuery Ajax加载图像

jQuery页面加载之前的加载器

使用jQuery单击隐藏/显示按钮时页面重新加载

使用 jQuery 只显示一次预加载页面

如何在加载/显示页面之前使用Vue(路由器)获取GET请求变量

页面加载之前的Ajax调用

在单页网站中使用jquery ajax加载页面时显示进度条

加载之前不显示图像

在使用ui-router导航到新页面之前,如何加载jQuery?

即使我使用的是 $(window).on('load', function(),jQuery 也会在页面完成加载之前执行

使用Tabs时,是否可以在页面加载之前在JQuery中隐藏内容?

在加载页面元素之前,必须在jquery中使用哪个事件进行调用?

jQuery Ajax加载图像未在Ajax调用上加载

jQuery Ajax页面加载

在执行$ .ajax时显示加载图像

在执行ajax时显示加载图像

使用AVAudioEngine录制麦克风和声音效果

ReactJs 搜索按钮在获取图像链接并显示它们之前重新加载页面

页面加载时显示图像

使用jQuery查找页面加载后加载到dom的图像?

用于从 Ajax 加载的新图像的 jQuery LazyLoad

阻止 jQuery 在 ajax 调用后加载图像

如何延迟图像的加载,以便可以在加载图像之前2或3秒钟显示loading.gif?(使用jQuery / javascript)