Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как в JS открыть новое окно с размерами как у картинки
 
 автор: chuser   (14.10.2009 в 12:00)   письмо автору
 
 

Задача такая: открыть новое окно и сделать его размеры равными размерам изображения, путь к которому передается в параметре img_url. Загружаю изображение и функцией checkLoad проверяю загрузилось оно или еще нет. В функции checkLoad использую рекурсию. Функция checkLoad должна выполняться пока изображение не загрузится, т.е. пока условие myImage.complete не станет true. Но нифига не работает. А вот, если в блоке else раскомментировать строку alert('no'), то все нормально работает. Зацикливание происходит. Ну естественно при каждой проверке выскакивает сообщение с текстом "no".
А вот, если строку alert('no') убрать, то не работает.
В чем проблема? Не могу разобраться. Уже полдня сижу и туплю.

function new_win(url, img_url)
{
var myImage = new Image();
myImage.src = "http://ekkirpich.ru" + img_url;
checkLoad();

function checkLoad(){
if(myImage.complete){
var w = myImage.width;
var h = myImage.height;
var wTop = screen.height / 2 - h / 2;
var wLeft = screen.width / 2 - w / 2;
var param = "width=" + w + ",height=" + h + ",left=" + wLeft + ",top=" + wTop;
newWin = window.open(url, "myWindow", param);
}
else{
//alert('no');
checkLoad();}
}
}

  Ответить  
 
 автор: АЯ   (14.10.2009 в 12:55)   письмо автору
 
   для: chuser   (14.10.2009 в 12:00)
 

Вы браузеру вздохнуть не даёте.
Замените
else{
//alert('no');
checkLoad();}
на
else {setTimeout (checkLoad, 100);}

  Ответить  
 
 автор: chuser   (14.10.2009 в 19:35)   письмо автору
 
   для: АЯ   (14.10.2009 в 12:55)
 

Заменил. Все-равно не работает. Окно открывается, но не с первого раза. Надо кликнуть несколько раз, чтобы оно открылось. Но после того как окно открылось, потом окно открывается с первого раза. Наверное, потому что картинка теперь сидит в кэше.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования