Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > замена изображения и IE6


Автор: jsa 21.4.2009, 10:58
Hi all

есть скрипт который подгружает изображения на страничку через определнное время, работает везде кроме IE(ни 6, ни 7, ни 8 не работает), НО неработает только на хостинге, в локале все замечательно

сам код
Код

var galItems = new Array();
var galSleep = 3000;
var preloadSleep = 500;
var sleep, galTimer;


//alert(location);

function preload_image(img_url, i) {
    var img = $('#pre' + i);                
    img.attr('src', img_url);
    
    sleep = setInterval('check_preload(' + i +')', preloadSleep);
}

function check_preload(i) {    
    var img = $('#pre' + i);
    clearInterval(sleep);
    
    if(img.attr('complete') == true){        
        gallary_fade(i);
    } else {
        sleep = setInterval('check_preload(' + i +')', preloadSleep);
    }    
}

function fade_next(i){
    if(i < galItems.length) {        
        var img_url = galItems[i].url;
        preload_image(img_url +'?pv=1', i);
    } else {
        galItems = new Array();
        galTimer = setTimeout('gallary_random(0)', galSleep);
    }
}

function gallary_facebox() {
    $('a[@rel*=gal]').facebox({
        loadingImage: '/view/images/loader.gif'
    });
}

function gallary_fade(i) {    
    var obj = $('#gal' + i).find('img');
    var anch = $('#gal' + i).children('a');                        
    var img_url = galItems[i].url;
                
    //$('#info').text('before ' + anch.attr('href'));    
    obj.fadeOut(1000, function(){            
                    
            anch.attr('href', img_url);                                                                
            if ($.browser.msie) {
                var gimg = document.getElementById('gimg' + i); 

                gimg.src = '';
                gimg.src = img_url + '?pv=1';  // ВОТ ЗДЕСЬ КОСЯК в IE(причем только на хостинге)!!!!!!!!!!!!!!!
            } else {
                obj.attr('src', img_url + '?pv=1');
            }
            obj.fadeIn(1000, function(){    
                fade_next(++i);
            });                    
                                                                
    });            
}

function gallary_random(f) {
    var gl = $('#gal_random');
    var url = '/gallary/random';
    
    if (f) {
        $.getJSON(url, function(data){
            //gl.append('<span id="info">&nbsp;</span>');
            $.each(data.items, function(i, item){
                gl.append(
                    '<img class="pre" id="pre' + i + '" alt="" />' + 
                    '<div class="gal" id="gal' + i +'">' +
                    '<a rel="gal" href="' + item + '">' +
                    '<img id="gimg' + i + '" src="' + item + '?pv=1" width="150" height="150" alt="" />' +
                    '</a></div>'
                );
            });
            gallary_facebox();
            galTimer = setTimeout('gallary_random(0)', galSleep);
        });                        
    } else {        
        $.getJSON(url, function(data){
            $.each(data.items, function(i, item){
                var galItem = {        
                    url: item
                };
                try{
                    galItems.push(galItem);
                } catch(err) {
                    alert(err.description);
                }                
            })
            
            preload_image(galItems[0].url + '?pv=1', 0);            
                                    
        });
    }                
}
...
$(document).ready(function(){
    gallary_random(1);
});


 smile мозг уже кипит
я думаю может просто какие-то приколы с безопасностью

Автор: Aliance 21.4.2009, 11:06
Попробуй прописать абсолютный путь + скажи как ругается браузер.

Автор: jsa 21.4.2009, 11:30
никак не ругается, после obj.fadeIn.... по идеею должно отобразиться новое изображение, но отображается старое

Автор: Aliance 21.4.2009, 11:34
Сделай алерты и проверь, меняется ли адрес картинки

Автор: jsa 21.4.2009, 12:39
Цитата(Aliance @  21.4.2009,  16:34 Найти цитируемый пост)
Сделай алерты и проверь, меняется ли адрес картинки

как ни странно, это помогло  smile, после алертов все работает... уличная магия js  smile 

Автор: Aliance 21.4.2009, 12:41
Да прибудет с тобой сила джидаев  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)