Я использую jQuery для добавления некоторых наложений изображений поверх изображений продуктов, но у меня возникают проблемы с отображением наложений последовательно.
css в теле страницы определяет фон наложения-image paths:
<body>
.... //products grid
<div class="producttile" data-overlay-pid="abc"> ...</div>
//end products grid
<style>
.top_seller { background-image: url('http://mysite.com/overlays/top_seller.png');}
.clearance { background-image: url('http://mysite.com/overlays/clearance.png');}
</style>
</body>
Я использую полные пути, поэтому у меня нет проблем относительного пути.
После загрузки страницы я делаю ajax-вызов в веб-сервис для возврата JSON-информации о том, какой продукт должен получить какие наложения.Ответ json содержит имя обратного вызова и параметры для обратного вызова:
[{"params":{"pid":"abc","overlay":"top_seller"},"callback":"setOverlay"},{"params":{"pid":"xyz","overlay":"clearance"},"callback":"setOverlay"}]
Вызов ajax завершает работу и вызывает функцию обратного вызова, которая создает пустой элемент div, назначает ему класс оверлея и добавляет его к продукту div.
setOverlay : function(params) {
var pid = params['pid'];
var el = jQuery(selector + "[data-overlay-pid='"+params['pid']+"']");
//inject an overlay on this element
//add div with class of size
el.css('position','relative');
var new_overlay = jQuery('<div>');
new_overlay.attr('class',params['overlay']);
new_overlay.prependTo(el);
}
Я проверил это с двумя разными наложениями, и этот процесс работает нормально в Chrome.Но в Firefox один из оверлеев загружается, но не другой.Когда я смотрю на сетевую консоль, 2-е наложенное фоновое изображение никогда не загружается.Это несоответствие между браузерами для меня похоже на состояние гонки, когда фоновое изображение загружено не полностью, чтобы быть доступным, но я не смог найти никакой информации для его исправления.
Я уже использую document.readyперед вызовом моего сценария ajax.Как мне это исправить?
ОБНОВЛЕНИЕ: весь код / CSS упрощен, чтобы его было легче читать.
ОБНОВЛЕНИЕ: в firebug, когда я проверяю div оверлея, класс вообще не содержит свойства background-image.в chrome, когда я проверял наложение, у класса есть URL-адрес фонового изображения, но есть строка через него и восклицательный знак, в котором указано недопустимое значение свойства.