ОБНОВЛЕНИЕ НИЖЕ
Мне кажется, я только что обнаружил действительно странную ошибку в Safari 5.1 на OS X Lion.Я не могу точно подтвердить, существовала ли эта ошибка в более ранних версиях Safari, но я в некотором роде подозреваю, что нет (учитывая тот факт, что часть моего сайта, которая ссылается на эту проблему, использовалась в pre-Lion Safari).Я не вижу ошибки в Chrome, Firefox 6, IE7 или IE9.Я также смог подтвердить, что ошибка не возникает в Safari 5.0.2 в Windows 7, что, вероятно, означает, что это ново для Safari 5.1.
Итак, вот ошибка: может показаться, что еслиФункция javascript Подтверждение () находится внутри другой функции, тогда что-либо внутри этой функции, вызываемое до Подтверждение (), не будет выполнено, пока не будет нажата кнопка «ОК» или «Отмена».Это, конечно, кажется мне огромной и действительно странной ошибкой.Вот мой пример кода:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function myexit () {
console.log(0);
if ( confirm('Are you sure?') ) {
window.close();
}
}
</script>
</head>
<body>
<a href="#" onclick="myexit();">close window</a>
</body>
</html>
Во всех других браузерах, о которых я упоминаю, 0 появляется в консоли одновременно с появлением окна подтверждения режима.В Safari значение 0 появляется только после , когда вы нажимаете «OK» или «Отмена».
Кроме того, если я добавлю функцию Подтверждение () в подфункцию, например:
function confirmwrapper() {
if ( confirm('Are you sure?') ) {
console.log(1);
}
}
function myexit () {
console.log(0);
confirmwrapper();
}
... он все еще ломается.
Я что-то здесь упускаю?С уважением, ответы типа «просто используйте JQuery / Mootools / какую-то другую классную библиотеку JS», вероятно, не сильно мне помогут, потому что этот код является частью устаревшей системы, которую я сейчас не могу полностью разорвать, так же как и яхочу.
ОБНОВЛЕНИЕ: Я только что проверил простой запрос AJAX (Mootools Request (), для тех, кто ведет счет, хотя я не думаю, что это действительно имеет значение), и я смог подтвердить, что запрос не выполняется до закрытия диалогового окна подтверждения - либо «ОК», либо «Отмена».Это должно быть ошибка.Орехи.
Заранее спасибо