Не удается установить атрибут заголовка при загрузке изображения в IE 7 и IE 8 - PullRequest
0 голосов
/ 02 июня 2011

Я нахожусь в процессе отладки слайд-шоу фонового изображения, которое я написал.

Сценарий состоит в том, что он загружает первое изображение и отображает его, а затем вызывает функцию preloadImages, которая затем загружает остальные изображения с заданным интервалом.

preload_img - это глобальная переменная, определенная в начале моего плагина (var preload_img = 1;), которая отслеживает текущий номер загружаемого изображения и сохраняет его значение, как и должно, но это значение не применяется к Атрибут заголовка изображения.

// load the images in sequence one after another
function preloadImages()
{
    clearInterval(interval_preload);

    var div = '<div id="'+options.id_holder+preload_img+'" class="bg_img_holder"></div>';
    $('#'+options.id_wrapper).append(div);

    var img = new Image();

    //alert("loading: " + options.img_path + images[preload_img].image + " " + preload_img);
    $(img).load(function()
    {
        alert("loaded: " + $(this).attr('src') + " " + $(this).attr('title'));
        $img_holder = $('#'+options.id_holder+$(this).attr('title'));

        $img_holder.append(this)
        .css({
        'display':      'none',
        'background-color': images[$(this).attr('title')].background,
        'z-index':      -500
        })
        .find('img')
        .height($img_holder.width() * 0.5625);

    }).attr({
        'src':      options.img_path + images[preload_img].image,
        'title':    preload_img
    });

    //if there's another image to load after this one
    if(++preload_img < (images.length))
    {
        interval_preload = setInterval(preloadImages,1500);
    }
}

Хотя preload_img определяется при загрузке изображения (первое закомментированное предупреждение показывает правильное значение), когда изображение загружается, заголовок является пустой строкой (второе, без комментариев).

Проблема не возникает при первом открытии страницы (откройте браузер, введите адрес, нажмите ввод), но возникает каждый раз.

Возможно, это что-то маленькое, что я пропустил, но я провел последний час, просматривая это, и схожу с ума.

Существует действительно базовый тестовый пример: http://jsfiddle.net/72Sy6/4/ Оповещения генерируют ожидаемые данные во всех протестированных мною браузерах, кроме IE7, который содержит ожидаемые данные при открытии страницы, но во всех остальных случаях - нет.

Заранее извиняюсь за окна предупреждений, но это единственный известный мне способ отладки в IE7: X

edit: Слайд-шоу не было ошибок в IE 8, но этот тестовый пример показывает, что локальные переменные также не определены.

1 Ответ

0 голосов
/ 02 июня 2011

По какой-то причине я не совсем уверен, изменив это:

var img = new Image();
$(img).load(function(){
    //..
}).attr({
    'src':      options.img_path + images[preload_img].image,
    'title':    preload_img
});

на это:

var img = $('<img src="'+images[preload_img].image+'" title="'+images[preload_img].title+'" />');
$(img).load(function(){
    //..
});

исправил проблему.

...