За последние 24 часа нас посетили 16734 программиста и 1694 робота. Сейчас ищут 868 программистов ...

Помогите с изображениями ...

Тема в разделе "JavaScript и AJAX", создана пользователем lemonl, 25 окт 2011.

  1. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Здравствуйте,

    У меня на сайте присутствуют изображения на странице и описание к ним. Проблема в том что при переходе на другую вкладку, страницу или же начальная загрузка сайта не дает возможности некоторым изображениям (или всем) загрузиться. При обновлении (перезагрузке F5) всей страницы, изображения появляются !

    Как решить эту проблему?
     
  2. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
  3. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Люди добрые помогите пожалуйста !

    Скажите хоть куда копать...
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    может быть это проблема браузера ?
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    копать в firebug
     
  6. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Нет это не проблема браузера, проверял на нескольких та же ситуация. Дело в том что они попросту не успевают подгрузиться.
     
  7. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    tommyangelo
    +1
     
  8. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Мне нужно найти что-то на подобии этого

    [​IMG]

    Как только загружается страница с картинками, на месте картинок (если нужно время для подзагрузки) появляется загружающая анимация, после чего появляется сама картинка.
     
  9. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    событие onload
     
  10. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    А более подробно можно ...
     
  11. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Кто то делал нечто подобное ?!
     
  12. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
  13. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    ну я имею ввиду, то что пока грузятся изображения, нужно использовать onreadystatechange - функцию, где смотреть, как изменяется readyState, который будет равен "loading", если изображения грузятся, вот, а когда загрузятся то "complete" в обш,ем в этом направлении нужно смотреть.
     
  14. lemonl

    lemonl Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Реализация такого кода, должна существовать. Неужели никто не сталкивался с подобной проблемой !
     
  15. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    [js]
    var imgs = document.getElementsByTagName(' img ');
    var len = imgs.length;
    for(var i = 0; i < len; i++)
    {
    var img = imgs;
    img.onreadystatechange = function()
    {
    if(img.readyState == "loading")
    {
    //картинка тут вставляется
    }else if(img.readyState == "complete")
    {
    img.onreadystatechange = false;
    }
    }

    }

    [/js]

    как-то так но отлаживай сам, я с такой проблемой не сталкивался, но делал бы так.
     
  16. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    [js]/*
    * Image Preloader
    * @author Gromo
    * @version 0.0.1
    */
    (function(_global){
    /**
    * @namespace ImagePreloader
    * @name ImagePreloader
    */
    ImagePreloader = function(images, callback, imageCallback) {

    this.images = {};

    this.callback = callback;

    this.imageCallback = imageCallback;

    if(typeof images == 'string')
    images = [images];

    var container = $('<div></div>');

    container.css({
    "visibility":"hidden",
    "position":"absolute",
    "top":"0", "left":"0"
    }).appendTo('body');

    for(var i=0; i<images.length; i++){

    this.images[images] = false;

    $('<img>')
    .attr('src', images)
    .load($.proxy(this, 'loaded'))
    .appendTo(container);
    }

    };

    ImagePreloader.prototype = {

    /**
    * @public
    */
    isLoaded : function(src){

    return this.images[src] ? true : false;

    },

    /**
    * Internal function that is called when image is loaded
    * @private
    */
    loaded : function(e) {

    var src = $(e.target).attr('src');

    this.images[src] = true;

    if(this.imageCallback)
    this.imageCallback(src);

    var isCallback = true;
    for(var src in this.images)
    if(!this.images[src]){
    isCallback = false;
    break;
    }

    if(isCallback)
    this.callback();
    }
    }

    })(window || this);[/js]

    пример использования:

    HTML:
    1. <!doctype html>
    2.   <meta charset="UTF-8">
    3.   <title>TEST PAGE</title>
    4.   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    5.   <script type="text/javascript" src="ImagePreloader.js"></script>
    6.   <script type="text/javascript">
    7.    
    8.     var loading_images = [
    9.       'http://img12.nnm.ru/9/7/c/3/3/97c336f72b2827488593b4c84fd1276f_full.jpg',
    10.       'http://i56.beon.ru/85/69/16985/22/1254522/anime_wallpapers1134230959_i_4098_full.jpeg',
    11.       'http://www.sunhome.ru/UsersGallery/wallpapers/71/17201350.jpg',
    12.       'http://www.wallpaperfox.com/download/view?file=MTYwMHgxMjAwLzIwMTEwNTEzL2IzZWU0YzdmZjdiZDMxMjMwZDQwNTU1MjkyNzNhYjJhLmpwZw=='
    13.     ];
    14.    
    15.     //loading_images[4] = 'http://i56.beon.ru/85/69/16985/22/1254522/fake_image.jpeg'; // fake image
    16.    
    17.     function imageLoader(src){
    18.       $('#images').append('<div>'+src+': <img src="'+src+'" style="height: 60px;"></div>');
    19.     }
    20.    
    21.     var image_preloader;
    22.    
    23.     $(document).ready(function(){
    24.       image_preloader = new ImagePreloader(loading_images, function(){ alert('All images loaded !'); }, imageLoader);
    25.     });
    26.   </script>
    27. </head>
    28.   <div id="images"></div>
    29.   <div id="button">
    30.     <input type="button" onclick="alert(image_preloader.isLoaded(loading_images[0]));" value="IMAGE 01">
    31.     <input type="button" onclick="alert(image_preloader.isLoaded(loading_images[1]));" value="IMAGE 02">
    32.     <input type="button" onclick="alert(image_preloader.isLoaded(loading_images[2]));" value="IMAGE 03">
    33.     <input type="button" onclick="alert(image_preloader.isLoaded(loading_images[3]));" value="IMAGE 04">
    34.     <!-- input type="button" onclick="alert(image_preloader.isLoaded(loading_images[4]));" value="FAKE IMAGE" -->
    35.   </div>
    36. </body>
    37. </html>