Невыполнение скрипта для уже загруженных картинок в опере
У меня есть скрипт, который уменьшает изображения и позиционирует их для получения "первью" или демо-картинок.
Выполняется он так:
var $img = $('.demophoto');
$img.load(function (){
// Сам скрипт
});
Проблема в том, что в опере скрипт выполняется только при первой загрузке изображений, после обновления страницы изображения, как я понял, уже загружены в кэш и, опять же как я понял, события Load просто напросто не происходит, соответственно скрипт не выполняется. Я где-то читал, что эту проблему можно решить trigger-ом, но как? я не понял даже после прочтения инструкции по триггеру. Помогите разобраться)) Весь скрипт |
$('.demophoto').each(function() {
var load = function() {
// Сам скрипт
}
if ( this.complete ) {
load.call( this );
} else {
$( this ).load( load );
}
});
|
Только хуже стало. В опере осталось по прежнему, а в других браузерах стало глюкать - иногда скрипт не выполняется.
Например в хроме скрипт выполняется после обновления страницы. |
$('.demophoto').each(function() {
var img = new Image();
img.onload = function() {
// Сам скрипт
}
img.src = this.src;
});
|
devote,
Возможно, оба ваши способа работоспособны, может виноват сам скрипт, я его не сам писал - он с урока, поглядел - там что-то намудрёно, сейчас упростил он заработал и в опере, только немного не так, как нужно. Если всё заработает - отпишусь. |
Да, проблема была именно в скрипте, что уменьшал изображения. Я его упростил, исправил + ваша конструкция - всё работает.
Спасибо)) P.S. Ссылка на весь скрипт осталась прежней - она есть в моём первом сообщении. |
Не совсем проблема решилась... :(
Ваша конструкция работает, но не работает внутри неё var imgs = $(this); А нужно именно this, так как картинок много и все разные. |
Acreator57887,
Заушно можно долго искать правды жизни (Напоминает лечение зубов по фотографии Создайте тест с боль-мень рабочим скриптом - выложите ссылку |
var $img = $('.demophoto');
$img.load(function (){
var CurImg = $(this);
CurImg.removeAttr("width");
CurImg.removeAttr("height");
var width = CurImg.width();
var height = CurImg.height();
if (width > height) {
CurImg.css('height', 180);
} else {
CurImg.css('width', 180);
};
var width_e = CurImg.width();
var height_e = CurImg.height();
if (width_e > 180) {
var rig = (width_e-180)/2;
CurImg.css('right', rig);
} else {
var bot = (height_e-180)/2;
CurImg.css('bottom', bot);
};
CurImg.css('display', block);
});
http://test-0-1.ucoz.ru/photo |
Acreator57887,
Если не секрет - что скрипт делает ? |
| Часовой пояс GMT +3, время: 08:07. |