Как получить текущее значение фонового изображения элемента с IE6? - PullRequest
2 голосов
/ 13 апреля 2011

Это немного сводит с ума. У меня есть код, который сохраняет текущее фоновое изображение из выбранного элемента в переменную, которую я затем использую для создания тега img.

Проще говоря, во всех протестированных мной браузерах, кроме IE6, работает следующее:

var bg = $('.element_selector').css('background-image');

Возвращаемое значение из IE6 - «none», что неверно. (Прежде чем кто-либо предложит попробовать «backgroundImage» вместо «background-image», не играйте в кости.)

Любые идеи о том, как я могу получить это значение?

Обновление : я забыл упомянуть, что фоновое изображение, о котором идет речь, было обработано DD_belatedPNG , который теперь кажется виновником - если я закомментирую исправление, я получу моя ценность Если кто-нибудь знает, как я могу получить это значение после исправления png, пожалуйста, дайте мне знать.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2011

После некоторого тестирования в IE6 я смог воспроизвести вашу проблему с DD_belatedPNG и фоновым источником.

Вот что я нашел. Если вы установите переменную background-image перед вызовом DD_belatedPNG.fix('[selector]');, вы получите желаемый результат. Если вы устанавливаете его позже, например, в событии click, вы получите значение "none".

Кроме того, DD_belatedPNG добавляет элемент изображения на страницу, содержащую ваше фоновое изображение (с классом DD_belatedPNG_sizeFinder), так что вы можете потенциально 1) повторно использовать, 2) копировать или 3) принять значение атрибута src из этого элемента.

Вот мой код тестирования:

CSS:

#myElement
{
    width: 515px;
    height: 341px;
    margin: 100px auto;
    background: #f00 url('http://www.chismbrothers.com/images/woodfloors.png') no-repeat 0 0;
}

HTML:

<div id="myElement"></div>


<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<div id="test4"></div>

JQuery:

$(document).ready(function() {
    // Works as expected
    var bg = $('#myElement').css('background-image');
    $('#test1').text("pre png fix: " + bg);

    DD_belatedPNG.fix('#myElement');

    $('#myElement').click(function() {
        var bg = $(this).css('background-image');
        var bgAll = $(this).css('background');

        // This yields values of 'none' for bg and 'undefined' for bgAll
        $('#test2').html("post png fix: " + bg + "<br />bg: " + bgAll);

        // DD_belatedPNG creates an image element on the page with a class of 
        // 'DD_belatedPNG_sizeFinder' which can be used to get the image src
        $('#test3').html('dd_belatedpng_sizeFinder: ' + $('.DD_belatedPNG_sizeFinder').attr("src"));

        // Perhaps reapplying 'zoom' css will reapply the BG values?
        $(this).css({ zoom: 0 }).css({ zoom: 1 });
        // Set values again.
        bg = $(this).css('background-image');
        bgAll = $(this).css('background');
        // No luck...same result as #test2
         $('#test4').html("post png fix: " + bg + "<br />bg: " + bgAll);
    });
});
0 голосов
/ 13 апреля 2011
  1. Вы пробовали background?
  2. Вы уверены, что элемент прав?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...