• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как проверить загружено изображение или нет?

  • Автор темы chuser
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

chuser

Задача такая: при нажатии на ссылку должно открываться новое окно с изображением. При этом размер окна должен подгоняться под размер изображения. Функция new_win загружает картинку. Функция checkLoad проверяет, если картинка уже загружена, то открыть окно. Если не загружена, то вернуться к проверке. Т.е. используется рекурсия.
Проблема в том, что окно открывается только при повторном нажатии на ссылку. Потом, когда картинка уже в кэше все работает нормально. Почему при первом нажатии на ссылку рекурсия не работает? По идее функция checkLoad должна выполняться пока картинка не загрузится (условие if(myImage.complete)).


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

<script type="text/javascript" charset="utf-8">
function checkLoad(url, myImage){
if(myImage.complete){
var w = myImage.width;
var h = myImage.height;
var param = "width=" + w + ",height=" + h;
newWin = window.open(url, "myWindow", param);}
else{
SetTimeout(checkLoad(url, myImage), 100);}
}
}
function new_win(url, img_url)
{
var myImage = new Image();
myImage.src = img_url;
checkLoad(url, myImage);
}
</SCRIPT>
</head>

<body>
<a href="java script:new_win('2.html', '1.jpg')">LINK</a>
</body>

</html>
 
E

etc

Тут для начала надо исправить синтаксические ошибки, потом можно будет дальше.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!