| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > JS открыть новое окно с размерами как у картинки |
| Автор: chuser 14.10.2009, 11:10 |
| Задача такая: открыть новое окно и сделать его размеры равными размерам изображения, путь к которому передается в параметре 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();} } } |
| Автор: bars80080 14.10.2009, 13:15 |
| вам не кажется странным, что у вас одна функция сидит в другой? да ещё и вызов до объявления |
| Автор: chuser 14.10.2009, 18:24 |
| Условие if(myImage.complete){ не срабатывает. Не знаю почему. Но вот если раскомментировать строку alert('no'), то условие срабатывает. alert(myImage.src) выводит корректный путь к изображению. |
| Автор: youri 15.10.2009, 00:19 | ||
ну мне, например, совсем не кажется: вложенные функции не загрязняют глобальное пространство имен. Объявления (переменных функций) "выполняются" при входе в функцию, перед выполнением кода alert создает задержку, за которую картинка успевает загрузиться. Лучше назначай обработчик onload, причем перед назначением src |
| Автор: bars80080 15.10.2009, 00:43 |
| ... Добавлено через 1 минуту и 40 секунд |
| Автор: youri 15.10.2009, 02:38 | ||||
давай проверим
|