Это кажется плохой идеей для меня. Какова цель этой функции? Похоже, вы хотите что-то эквивалентное этому:
<img src="/images/file1.jpg" src2="/images/file2.jpg" src3="/images/file3.jpg">
Где браузер будет пытаться каждый файл подряд. Проблема с этим подходом заключается в том, что он значительно увеличивает требуемый трафик http и латентность. Лучшим подходом является динамическое построение страницы с использованием правильных тегов изображений загодя. Используя подход на стороне сервера, вы можете попытаться загрузить изображение с диска (или базы данных или везде, где есть изображения) и динамически включить лучший URL-адрес в тег изображения страницы.
Если вы настаиваете на делать это на стороне клиента, вы можете попытаться загрузить несколько тегов изображения:
<img src="file1.jpg" alt="" onerror="this.style.display='none'">
<img src="file2.jpg" alt="" onerror="this.style.display='none'">
<img src="file3.jpg" alt="" onerror="this.style.display='none'">
<img src="file4.jpg" alt="" onerror="this.style.display='none'">
<img src="file5.jpg" alt="" onerror="this.style.display='none'">
<img src="file6.jpg" alt="" onerror="this.style.display='none'">
Это приведет к странице, которая, как представляется, имеют много изображений, но они исчезают при загрузке страницы. alt=""
требуется для того, чтобы Opera не отображала место для сломанного изображения; onerror
требуется для Chrome и IE.
Если это недостаточно, и если все ваши изображения имеют одинаковый размер и этот размер известен, вы можете складывать кучу изображений один поверх другого, так что первое загружаемое изображение скрывает все другие. Это работало для меня в Opera, FF и IE8. Он загружает последнее изображение в список, который существует. Обратите внимание, что это уменьшает пропускную способность и память, потому что загружается каждое изображение.
<div style="width: 50px; height:38px; background-image: url(file1.jpg);">
<div style="width: 50px; height:38px; background-image: url(file2.jpg);">
<div style="width: 50px; height:38px; background-image: url(file3.jpg);">
<div style="width: 50px; height:38px; background-image: url(file4.jpg);">
<div style="width: 50px; height:38px; background-image: url(file5.jpg);">
<div style="width: 50px; height:38px; background-image: url(file6.jpg);">
<div style="width: 50px; height:38px; background-image: url(file7.jpg);">
</div></div></div></div></div></div>
Наконец, есть подход JavaScript:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script type="text/javascript">
var image_array = ['file1.jpg', 'file2.jpg', 'file3.jpg', 'file4.jpg', 'file5.jpg','file6.jpg' ];
function load_img(imgId, image, images, index) {
image.onerror = function() {
load_img(imgId, this, images, index+1);
};
image.onload = function() {
var element = document.getElementById(imgId);
if (element) {
element.src = this.src;
element.style.display = 'block';
}
};
image.src = images[index];
}
</script>
</head>
<body>
<img id="id_1" alt="" style="display: none;">
</body>
<script>
load_img('id_1', new Image(), image_array, 0);
</script>
</html>
Определить «работы». – anddoutoi
Нет, но да, возможно, решение JavaScript/JQuery, решение на стороне сервера - это еще один вариант. – rohancragg
Я думаю, что эта ссылка может помочь вашей проблеме http://stackoverflow.com/a/9891041/2301588 – Sky