• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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

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

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