Вопрос насчет обработчика load в ie
Здравствуйте у меня вопрос насчет обработчика load для изображений и его применение в браузере ie. Сделал скрипт увеличения изображения.
Код увеличения изображения работает отлично в Firefox. В ie есть маленькая проблема, когда кликаем по маленькой картинке, то увеличенной картинке передаются сначала начальные координаты style.left и style.top, а потом уже заданные. То есть другими словами картинка как бы прыгает при первом запуске html. Код примерно такой: if (imeg.complete) funcs(imeg,g); else attachEvent("load",function(){funcs(imeg,g);}); imeg - картинка большая funcs(imeg,g); - функция которая задает нужные параметры style.left и style.top для большой картинки. 1.Я читал в книгах, что ie не возбуждает обработчик load для картинок, то есть ie считает, что картинка уже загружена, требуется ли передавать параметры картинки только когда загрузится изображение, другими словами передать функцию параметров картинки обработчику load ? 2.Как правильно передать параметры картинки чтобы картинка сразу же после загрузки приняла нужные значения, а не стандартные значения а потом уже нужные(чтобы не прыгала)? |
Цитата:
Назначать обработчик события load нужно до изменения src. Еще очень распространенная ошибка и многие на ней попадаются, когда по DOMContentLoaded ($(document).ready(…) в jQuery) назначают обработчики события load изображений, но для изображений из кэша, событие load наступает раньше DOMContentLoaded, соответственно никакой реакции на них не получаем. Цитата:
|
Цитата:
то что не известно это координата "y" которую я с помощью offsetTop нахожу. Поэтому и использую style.top установил раньше src, ничего не изменилось также прыгает в ie (прыгает когда первый раз запускаешь в открывшемся html событие) window.onload=function(){.... var im=document.createElement("img"); completeload(im,g,loading); - добавляет обработчик load im.src=s.substring(0,s.lastIndexOf('.'))+"kadr"+s.substring(s.lastIndexOf('.'),s.length); im.className="imagebig"; im.setAttribute("name","big"); g.parentNode.appendChild(im); function completeload(imeg2,g,funcs){ if (imeg2.complete) funcs(imeg2,g); else crosslist(imeg2,"load",function(){funcs(imeg2,g);},0);}} Уточню:прыгает это означает что сразу не назначается style.left style.top то есть сначала назначается пустой style а потом назначается нужный style.left и style.top кстати я еще использую im.height и im.width так что до src никак не получится |
Часовой пояс GMT +3, время: 18:57. |