2013-08-05 127 views
0

是否可以为HTML5应用预先加载一组图像(针对移动Safari)?在移动Safari上预装HTML5应用程序的图像?

在理想的情况下,应用程序的启动映像会一直存在,直到某些图像加载完毕。

我们尝试使用CSS背景属性,并将每个图像作为单独背景包含在内,但未能预加载图像并保留启动图像。

这是我们设置的开机画面HTML,但是这不能继续下去,直到所有的图像加载:

<!-- iPhone 3 and 4 Non-Retina --> 
<link rel='apple-touch-startup-image' media='(device-width: 320px)' href='/images/x/apple-touch-startup-image-320x460.png'> 

回答

0

使用下面的代码来使用jquery预加载图像。

<style type="text/css"> 
.start_up{width:100%;height:100%;position:fixed;z-index:999;display:none;} 
.start_up img{width:100%;height:100%;display:block;} 
</style> 

<div class="start_up"> <img src="startup-image.png" /></div> 

<script type="text/javascript"> 
$(document).ready(function(e) { 
    //showing startup image. By default it will be display:none via css. 
    $('.start_up').show(); 

    //load img 
    var imgArray = ['image 1 path','image 2 path', 'image 3 path']; 
    var total = imgArray.length; 
    var imgLoaded = 0; 
    for (var i in imgArray) { 
     $("<img />").load(function() { 
      imgLoaded++; 
      if (imgLoaded == total) { 
       //when all images loaded we hide start up image. 
       $('.start_up').hide(); 
      } 
     }).error(function() { 
      imgLoaded++; 
      if (imgLoaded == total) { 
       //when all images loaded even error in img loading, we hide startup image. 
       $('.start_up').hide(); 
      } 
     }).attr("src", imgArray[i]); 
    } 
}); 

</script> 
+0

谢谢,但我们如何坚持HTML5的启动图像,直到所有的图像预加载? – Crashalot

+0

编辑代码以显示启动图像。 –

0

你应该使用HTML显示“开机画面”,并使用JavaScript添加其他图片在$(document).ready事件中。

//编辑

rajni的回答有一个很好的例子,说明应该做什么。但是,您应该阅读关于​​事件的警告on this page

+0

感谢,我们使用HTML现在(与代码更新的问题),但启动图像显示的启动映像在加载应用程序所需的所有图像之前隐藏。我们如何坚持图像,直到所有的图像被预加载? – Crashalot

+0

编辑我的asnwer。 – jbkkd

0

可以使用Image constructor,甚至预装图像时,DOM还没有准备好:

var srcArray = ['/path/to/image1.jpg', '/path/to/image2.jpg']; // your image sources 

function loadImages(srcArray, callback) { 
    var loaded = []; // here the loaded images will be contained 

    for (var i; i < srcArray.length; i++) { 
    // wrap the loop into a closure because onload is asynchronous 
    (function(src) { 
     // construct a new image 
     var img = new Image(); 

     // use the onload event of the image 
     // you can react to errors or load aborts using 'onerror' or 'onabort' 
     img.onload = function() { 
     loaded.push(img); 

     // call the callback once all images are loaded 
     loaded.length === srcArray.length && callback.call(this, loaded); 
     }; 

     // set the source 
     img.src = src; 
    })(srcArray[i]); 
    } 
} 

// an easy, convenient function to load some images and do something 
// when they are loaded 
loadImages(srcArray, function(images) { 
    // when this function is called, all images are loaded 
    // use them as you please 
}); 
+0

谢谢,但我们如何坚持HTML5的启动图像,直到所有的图像预加载? – Crashalot

+0

使用普通的html图像,然后用'loadImages'替换图像。 –

相关问题