Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2012, 17:12
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Невыполнение скрипта для уже загруженных картинок в опере
У меня есть скрипт, который уменьшает изображения и позиционирует их для получения "первью" или демо-картинок.

Выполняется он так:
var $img = $('.demophoto');
$img.load(function (){
// Сам скрипт
});


Проблема в том, что в опере скрипт выполняется только при первой загрузке изображений, после обновления страницы изображения, как я понял, уже загружены в кэш и, опять же как я понял, события Load просто напросто не происходит, соответственно скрипт не выполняется.

Я где-то читал, что эту проблему можно решить trigger-ом, но как? я не понял даже после прочтения инструкции по триггеру. Помогите разобраться))

Весь скрипт
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2012, 17:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$('.demophoto').each(function() {
    var load = function() {
        // Сам скрипт
    }
    if ( this.complete ) {
        load.call( this );
    } else {
        $( this ).load( load );
    }
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2012, 09:28
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Только хуже стало. В опере осталось по прежнему, а в других браузерах стало глюкать - иногда скрипт не выполняется.
Например в хроме скрипт выполняется после обновления страницы.

Последний раз редактировалось Acreator57887, 25.07.2012 в 09:32.
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2012, 10:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$('.demophoto').each(function() {
    var img = new Image();
    img.onload = function() {
        // Сам скрипт
    }
    img.src = this.src;
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2012, 11:14
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

devote,

Возможно, оба ваши способа работоспособны, может виноват сам скрипт, я его не сам писал - он с урока, поглядел - там что-то намудрёно, сейчас упростил он заработал и в опере, только немного не так, как нужно.

Если всё заработает - отпишусь.

Последний раз редактировалось Acreator57887, 25.07.2012 в 11:55.
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2012, 11:29
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Да, проблема была именно в скрипте, что уменьшал изображения. Я его упростил, исправил + ваша конструкция - всё работает.

Спасибо))

P.S. Ссылка на весь скрипт осталась прежней - она есть в моём первом сообщении.
Ответить с цитированием
  #7 (permalink)  
Старый 25.07.2012, 18:50
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

Не совсем проблема решилась...

Ваша конструкция работает, но не работает внутри неё var imgs = $(this);
А нужно именно this, так как картинок много и все разные.
Ответить с цитированием
  #8 (permalink)  
Старый 25.07.2012, 18:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Acreator57887,
Заушно можно долго искать правды жизни (Напоминает лечение зубов по фотографии
Создайте тест с боль-мень рабочим скриптом - выложите ссылку
Ответить с цитированием
  #9 (permalink)  
Старый 25.07.2012, 19:46
Интересующийся
Отправить личное сообщение для Acreator57887 Посмотреть профиль Найти все сообщения от Acreator57887
 
Регистрация: 27.06.2012
Сообщений: 25

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
Ответить с цитированием
  #10 (permalink)  
Старый 25.07.2012, 20:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Acreator57887,
Если не секрет - что скрипт делает ?
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Невыполнение скрипта для уже загруженных картинок в опере Acreator57887 Общие вопросы Javascript 0 24.07.2012 17:10
Скрипт для вставки личных данных в Опере praeeo Opera, Safari и др. 2 30.12.2010 10:52
Прелоуд картинок не работает в Опере Arseo Opera, Safari и др. 3 20.11.2009 18:45
скрипт multibox для joomla - не работает в опере lamanzh Opera, Safari и др. 17 26.06.2009 11:35
Задание CSS для загруженных во фрейм страниц <Pool> Общие вопросы Javascript 1 14.01.2009 15:59