Невыполнение скрипта для уже загруженных картинок в опере
У меня есть скрипт, который уменьшает изображения и позиционирует их для получения "первью" или демо-картинок.
Выполняется он так: 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:48. |