глюк в Firefox ?
Здравствуйте такая проблема при добавлении в дерево сбиваются значения style.left и style.top (устанавливаются не те значения), самое что интересное только при первом событии клика, второе событие клика проходит правильно. в IE такой проблемы не возникает.
Другими словами при создании объекта img устанавливаются по умолчанию значения style.left и style.top как будто мы не установили im.setAttribute("style").Кроме того возможно при первом событии firefox не учитывает im.height и im.width отрывок кода:
case "click":
var im=document.createElement("img");
var s=g.src; im.src=s.substring(0,s.lastIndexOf('.'))+"kadr"+s.substring(s.lastIndexOf('.'),s.length);
im.className="imagebig";
im.setAttribute("name","big");
im.setAttribute("style","left:"+String((988-im.width)/2)+"px;"+"top:"+String(g.offsetTop-im.height/4)+"px;");
g.parentNode.appendChild(im);
goonlis(remlis);
addlis("1",bigimg,im);
break;
|
Цитата:
im.style.left = String((988-im.width)/2)+"px"; im.style.top = String(g.offsetTop-im.height/4)+"px"; |
Цитата:
Заметил что typуface выдает "auto" в firebug ! Самое интересное что когда через firebug проходишь строки с установкой стиля - firefox нормально устанавливает позицию элемента! var xss=document.getElementsByName("big")[0]; if (window.getComputedStyle) var typeface = window.getComputedStyle(im, null).width; |
Мне кажется что к моменту запроса картинка еще не загрузилась, поэтому ее ширина и не доступна (еще). Как насчет прицепить обработчик события onload к создаваемой картинке и туда перенести нужный код?
|
Цитата:
у firefox вылетает событие load при загрузке изображений, а у IE нет. поэтому надо или image.complete, но лучше image.onload !!! решение ошибки:
case "click":
var s=g.src;
var im=document.createElement("img");
im.src=s.substring(0,s.lastIndexOf('.'))+"kadr"+s.substring(s.lastIndexOf('.'),s.length);
im.onload=function(){
im.className="imagebig";
im.setAttribute("name","big");
im.setAttribute("style","left:"+String((988-im.width)/2)+"px;"+"top:"+String(g.offsetTop-im.height/3)+"px;");
document.body.appendChild(im);
goonlis(remlis);
addlis("1",bigimg,im);}
break;}
|
Цитата:
|
Цитата:
необязательно до или после так как это событие ,его можно после или перед ставить разницы нет никакой. |
Не надо ссылаться на книги по JavaScript, 99% из них не выдерживают никакой критики. Лучше взять и попробовать
(function f(i) {
var img = new Image();
img.onload = function() {
alert('loaded');
if (i < 3) {
f(i + 1);
}
};
img.src = 'http://javascript.ru/forum/images/ca_serenity/misc/logo.gif';
})(0);
|
Цитата:
|
Цитата:
|
Это лучше у дебагера спросить. А что значит не используется?
|
Цитата:
|
| Часовой пояс GMT +3, время: 01:38. |