2013-03-13 2 views
0

Я нашел этот код в JavaScript, и мне интересно, если это своего рода хак, или просто ошибка:Что это за взлом JavaScript?

var img = new Image(); 
img.src = myHttpSrc; 
img.onload = function() { 
    img.onload = null; 
}; 
+1

Это кажется довольно избыточным, но я не уверен, как мы могли бы узнать без какого-либо контекста ... – Jace

+3

Ну, по крайней мере, у него есть состояние гонки. (Да, действительно.) Если изображение находится в кеше, браузер может инициировать событие 'load', как только устанавливается' src', перед следующей строкой кода. (Потому что, хотя JavaScript в браузерах однопоточен - если вы не используете веб-работников - сам браузер * не *. Он может с радостью вызвать событие, увидеть, что к нему не подключены обработчики, и поэтому не ставьте их в очередь на выполнение когда следующий поток JavaScript становится доступным.) –

+0

Еще один контекст: это функция, связанная с событием 'onclick' ссылки. Функция всегда возвращает true. – KwiwaA

ответ

1

код кажется, чтобы загрузить изображение из myHttpSrc. Существует обработчик событий для onload, который будет запускаться при его загрузке. Обработчик также удаляет себя после завершения загрузки.

Это не взломать, но как обработчик onload не делает ничего, кроме удаления себя, кажется лишним.

0

Чтобы немного рассказать о ответе Ками, возможный сценарий, где это может понадобиться, заключается в том, что, возможно, где-то еще в коде, который они проверяют, чтобы проверить, является ли img.onload нулевым или нет - возможно, как способ проверки того, не загружено изображение без использования логического.

Это звучит далеко не идеально для меня и немного странно, но эй, это возможно.

И это моя точка зрения: никто не может знать, было ли это взломом или ошибкой без контекста, в котором этот код был указан.

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

Смежные вопросы