Проверка наличия ресурса на сервере требует отправки HTTP-запроса и получения ответа. TCP-связь может занять некоторое количество времени, например. если сервер занят, какой-то маршрутизатор между клиентом и сервером работает некорректно, сеть отключена и т. д.
Вот почему асинхронные запросы всегда предпочтительны. Даже если вы считаете, что запрос должен занимать всего миллисекунды, иногда это может быть секунды из-за некоторых сетевых проблем. И, как мы все знаем, блокировка главного потока в течение нескольких секунд - это большое значение no-no.
Все, что сказано, вот возможная реализация для fileExists()
метод.
Метод HTTP-запроса установлен на «HEAD», так что сервер отправляет только заголовок ответа, но нет данных.
func fileExists(url : NSURL!) -> Bool {
let req = NSMutableURLRequest(URL: url)
req.HTTPMethod = "HEAD"
req.timeoutInterval = 1.0 // Adjust to your needs
var response : NSURLResponse?
NSURLConnection.sendSynchronousRequest(req, returningResponse: &response, error: nil)
return ((response as? NSHTTPURLResponse)?.statusCode ?? -1) == 200
}
Потому что у вас нет элемента menu_start_custom
.
function menuToggle(action, id) {
switch (action) {
case true:
document.getElementById(id).style.display = 'block';
break;
case false:
document.getElementById(id).style.display = 'none';
break;
}
}
function doIt(mode)
{
switch (mode) {
case "random":
menuToggle(false, "menu_start_custom");
break;
case "custom":
menuToggle(false, "menu_start_prop");
break;
}
}
<span id="menu_start_custom">Random</span>
<span id="menu_start_prop">Custom</span>
В вашем html
<span id="menu_start_random">Random</span>
И в вашем js
menuToggle(false, "menu_start_custom");
Так что menu_start_custom не существует