X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> мозилла и прелоад
juckoff
juckoff
Topic Starter сообщение 11.8.2009, 21:36; Ответить: juckoff
Сообщение #1


задача:
по клику открыть окно по центру экрана, размером с изображение.

1. делаем прелод
prvImg = new Image();
prvImg.src = "123.jpg";


2. узнаем высоту и ширину изображения, оно понадобится для дальнейших вычислений
var w = prvImg.width;
var h = prvImg.height;


и тут вопрос:
почему w и h получаются со «2 раза», т.е. 1 раз кликнул открылось размером «абышто», закрыл. 2 раз кликнул - нормально. 3 день мучаюсь... хелп
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 11.8.2009, 22:27; Ответить: Apay
Сообщение #2


(juckoff @ 12.8.2009, 00:36) *
почему w и h получаются со «2 раза»
потомучто в первый раз нужно время для прелоада, во второй - берется уже из кеша.
оформите все как ф-ю на onload
var w, h;
prvImg.onload = function(){
  w = prvImg.width;
  h = prvImg.height;
  };
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 12.8.2009, 1:44; Ответить: MetSerp
Сообщение #3


кстати а зачем функция прелоада? почему не положить просто в невидимый слой нужные картинки? или я незнаю чего то что дает функция прелоада относительно скрытого слоя с картинками? :rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
juckoff
juckoff
Topic Starter сообщение 13.8.2009, 12:05; Ответить: juckoff
Сообщение #4


в мозилле заработало,
в опере и IE - нет. Открывается по клику только один раз, я так понимаю onload дальше не срабатывает. Вот код:

function open_window()
{
// загружаем изображение
prvImg = new Image();
prvImg.src = "th_" + pictureName[nextImage];

// получаем высоту и ширину
  var w, h, top, left, win, newWin;
  
  prvImg.onload = function() {
  w = prvImg.width + 50;
  h = prvImg.height  + 50;
  top = (screen.height - h)/2;
  left = (screen.width - w)/2;
  if(top < 0) top = 0;
  if(left < 0) left = 0;
  win = "width="+w+",height="+h+",top="+top+",left="+left+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no";
  newWin = window.open(prvImg.src,"newWin",win);
  newWin.focus();
  
  newWin.onload = function() {
  newWin.document.body.style.padding = 0;
  newWin.document.body.style.margin = 25;
  newWin.document.body.style.textAlign = "center";
  };
  
  };
  
}

приходит на ум 2 варианта:
1. проверять тип браузера
2. проверять загружена картинка или нет.

Посоветуйте плиз что лучше...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 13.8.2009, 12:55; Ответить: Apay
Сообщение #5


сначала проверяйте загружена ли картинка
if( prvImg.readyState == "complete" ){
  // открываем окно
  }
else prvImg.onload = ...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
juckoff
juckoff
Topic Starter сообщение 13.8.2009, 16:17; Ответить: juckoff
Сообщение #6


мозилу и IE победил... осталась опера

readyState похоже не понимает, пробовал значение "complete" менять на 4., никак...

Может быть что опера 9.64 это выражение не понимает?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 24.4.2024, 8:03
Дизайн