Консультация № 179752
20.08.2010, 23:58
43.65 руб.
0 5 0
Добрый вечер. Есть вопрос.

http://more.od.ua.c00055.firehost.com.ua/shablon5.php

Проблема у меня, думаю, в этом месте (приложение в нижнем окошке для кода).

Т.е. в img загружается другое изображение. Пока рисунок не получен браузером, код не исполняется. Короче, нужно смотреть, как работает в IE. В IE код при первом нажатии не работает. Если внутрь этого лоуда вставить алерт с номером картинки, показывается, что при каждом последующем нажатии эта функция задействуется на один раз больше. Мозилка это всё кушает и показывает норму, а вот IE стопорится: первый раз рисунок не увеличивается (т.е. внутри лоуда код частично не исполняется), зато все остальные разы код выполняется с оглядкой на координаты предыдущего нажатия - открывается там, где должен был открыться прошлый раз.

Как бороть?

Приложение:
$("#bpict>img").attr("src",bpicts[colresult]).load(function(){
if (nu==0) {
$("#bpict").animate({"left":"0px"},{queue:false,duration:300});
} else if (nu==1) {
$("#bpict").animate({"left":"250px"},{queue:false,duration:300});
} else {
$("#bpict").animate({"left":"493px"},{queue:false,duration:300});
}
$("#bpict>img")
.animate({"width":"300px"},{queue:false,duration:300})
.animate({"height":"400px"},{queue:false,duration:300});
$("#bpict")
.animate({"top":"0px"},{queue:false,duration:300});
});

Обсуждение

Неизвестный
21.08.2010, 00:21
общий
Что-то кнопки редактирования не найду.

Исправление:
В IE внутри лоуда первый раз код не исполняется полностью, а не частично.
Неизвестный
21.08.2010, 15:07
общий
Так версия какая все таки???
Неизвестный
21.08.2010, 15:31
общий
7.0.5730.13

Кроме этого ietester выдаёт эту ошибку в 6, 7 и 8

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

.load при первом клике не исполняется. При последующих - исполняется на один раз больше каждый раз.
Неизвестный
23.08.2010, 13:11
общий
Прим Палвер:
Не могу ответить в нормальном режиме, т.к. уже набрал ответ ошибочно, поэтому объясняю в комментариях к форуму. Ошибка у тебя в реализации lenta2.js. Вот как я исправил (не знаю всех требований, но работает и в explorer):
$(".spict").click(function() {
smallaimg();

var reg=/\D/g
var colresult=$(this).attr("class").replace(reg, "");

var nu=-Math.round(parseInt($("#col-tab2").css("margin-left"))/272);
if (nu>=numcola) nu-=numcola;
nu=colresult-nu;
if (nu<0) nu+=numcola;
$("#bpict").css("display","block");
$("#bpict").css("top","15px");
$("#bpict>img").css("width","255px");
$("#bpict>img").css("height","340px");
if (nu==0) {
$("#bpict").css("left","0px");
} else if (nu==1) {
$("#bpict").css("left","271px");
} else {
$("#bpict").css("left","538px");
}
var src = bpicts[colresult];
$("#bpict img").attr("src", src)
if (nu==0) {
$("#bpict").animate({"left":"0px"},{queue:false,duration:300});
} else if (nu==1) {
$("#bpict").animate({"left":"250px"},{queue:false,duration:300});
} else {
$("#bpict").animate({"left":"493px"},{queue:false,duration:300});
}
$("#bpict>img")
.animate({"width":"300px"},{queue:false,duration:300})
.animate({"height":"400px"},{queue:false,duration:300});
$("#bpict")
.animate({"top":"0px"},{queue:false,duration:300});

$("#coltext").html(coltexts[colresult]);
return false;
});
Неизвестный
23.08.2010, 15:40
общий
Так я позавчера и сделал - убрал load. А введение лишних переменных ни к чему.
О load была моя песнь.
Чтобы пока большой рисунок не подгрузится - движение не начиналось.
Форма ответа