在显示页面之前使用 jquery ajax 加载图像和声音
load images and sounds with jquery ajax before displaying page
所以我开始了这个小项目,Web应用程序,它使用了很多小图像和一些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();
});
它实际上是在下载所有的东西,但是当我尝试使用页面上的某些元素时,其中一些元素会再次继续下载(只有一些是从缓存中加载的。检查我是否从谷歌铬网络选项卡中监视所有这些。
那么 beetween jquery 内部资产调用和我的 ajax 调用有什么区别?
前我在玩纸牌游戏时遇到了完全相同的问题。问题在于某些浏览器如何处理通过异步方式加载的图像缓存。我可以在我的笔记本电脑上的 Firefox 中复制此问题,但不能在我的 PC 上复制此问题。我不确定实际问题是什么,但我知道如何用创可贴修复它。
只需将图像或资产的加载移动到主 Javascript 文件中即可。这些文件在生成页面时加载,并存储在缓存中页面的相应本地副本中。但是,通过 Ajax 缓存的文件并不总是保存在与当前页面相同的位置,具体取决于加载过程中经过的时间。我相信这是导致这种意外行为的关键设置,因为它根据不同浏览器的设置、不同的缓存侵略性等因系统而异。与页面一起保存在缓存中的任何文件都将立即加载(按预期),但任何未归属于您的页面的文件都需要根据请求重新加载。如果这些后续重新加载再次保存在不同的位置,您实际上必须一次又一次地重新加载这些文件。
因此,使用 Ajax 调用加载的所有文件,都可以在主 Javascript 中加载它们,而无需 Ajax 调用。对于您的迷你游戏,这没关系,因为用户将期待一个加载期。只要确保他们知道它正在发生,并且不会造成任何伤害。
- 在FrontEndphp-ajax-jquery中验证reCaptcha-google
- AJAX jquery json将数组发送到php
- 如何使用Ajax/jQuery设置cookie
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 如何使用Ajax JQuery.ech()获取JSON值
- 使用springform时,如何在ajax/jquery中获取复选框值
- JSP AJAX jQuery填充表问题
- Piping Value: Ajax + JQuery
- 使用javascript Without Ajax/Jquery在特定行中启用文本框
- 在AJAX jQuery加载()之后运行jQuery代码
- 具有动态更新的实时标题 (AJAX+jQuery)
- ajax/jQuery Youtube 播放列表推送
- AJAX jQuery Avatar Uploading
- 全局变量 - AJAX jQuery
- Ajax jquery mysqli update
- 获取剩余时间和上传文件速度 - ajax jquery/js
- 使用ajax/jquery绑定Json数据
- TypeError Obj.root是未定义的ajax jquery
- 当数据类型为XML时,如何将url参数传递给AJAX jquery
- 在ajax Jquery之后无法获取隐藏字段的值