Наткнулся на проблему при использовании плагина для jQuery
lightbox 0.5. В
Opera 11.00 - при нажатии на ссылку, которая должна отобразить фотографию, открывался оверлей, но фотография не отображалась. Если закрыть оверлей и снова нажать на туже ссылку, то фотография отображалась нормально.
Начал копаться в коде lightbox. Выяснил, что проблема в том, что в функции _set_image_to_view() из файла jquery.lightbox-0.5.js устанавливается обработчик события onload на объект Image, внутри обработчика выполняется отображение фотографии:
objImagePreloader.onload = function () {
$('#lightbox-image').attr('src', settings.imageArray[settings.activeImage][0]);
// Perfomance an effect in the image container resizing it
_resize_container_image_box(objImagePreloader.width, objImagePreloader.height);
// clear onLoad, IE behaves irratically with animated gifs otherwise
objImagePreloader.onload = function () { };
};
Но после загрузки фотографии обработчик onload не запускается.
Поскольку в других браузерах все работало отлично, понял, что проблема в Opera. Погуглив нашел несколько постов в форумах на эту тему:
Решения не нашел, поэтому сделал такую заплатку: в функцию _set_image_to_view() из файла jquery.lightbox-0.5.js после строк:
// Image preload process
var objImagePreloader =
new Image();
objImagePreloader.onload =
function () {
$(
'#lightbox-image').attr(
'src', settings.imageArray[settings.activeImage][0]);
// Perfomance an effect in the image container resizing it
_resize_container_image_box(objImagePreloader.width, objImagePreloader.height);
// clear onLoad, IE behaves irratically with animated gifs otherwise
objImagePreloader.onload =
function () { };
};
objImagePreloader.src = settings.imageArray[settings.activeImage][0];
добавил:
if (window.opera) {
var ver = window.opera.version();
if (ver ==
'11.00' || ver ==
'11.01' || ver ==
'7.50' || var ==
'7.54') {
___pause(1000);
objImagePreloader.onload();
}
}
Функция ___pause определена в файле jquery.lightbox-0.5.js. Значение задержки надо подобрать в зависимости от скорости загрузки фотографий. В общем 100% результат не гарантирован, т.к. скорость загрузки всегда разная.
Решение не очень красивое, но другого не придумал :)