Зависимость работы асинхронного кода от alert
Привет!
Уже не первый раз натыкаюсь на следующую ситуацию: Есть некий js-код, который в Firefox прекрасно работает, но.... только под дебаггером (типа Venkman'а) или если в произвольное место вставить alert(). Т.е. начинаешь отлаживать - работает. Прекращаешь - не работает! В прошлые разы что это было - не помню. А в этот раз это аж целый SVG-Edit, прикручиваемый к MediaWiki (у нас тут в CustIS, если кто знает - это как раз та самая сборка экстенжнов, о которой мы рассказывали на ADD)!!! Причём я могу это продемонстрировать на нашей внешней "вики-песочнице": http://wikisandbox.custis.ru/Фай...ботки.svg Попробуйте кликнуть кнопку внизу страницы и отредактировать файл SVG-Edit'ом под Mozilla Firefox, и узрите баг - файл не загрузится! В то же время если вставить в fetchSVG(), либо в другое место, к примеру в callback из svgEditor.addExtension, в файле extensions/SVGEdit/svg-edit/ext-mediawiki.js обычный alert('что угодно'), файл начинает стабильно грузиться! То же самое происходит, если гонять сие под Venkman JS Debugger'ом. В Chrome происходят похожие вещи. В Opera всё отлично работает всегда. Чтобы пробовать сохранить файл, сначала нужно зарегистрироваться (ссылка в правом верхнем углу). Чтобы открыть - не обязательно... Если кто-нибудь знает или подозревает, ЧТО ЭТО ЗА НАФИГ, расскажите, пожалуйста? :) |
alert приостанавливает выполнение кода
var time = new Date(); alert('Подожди пару секунд и нажми ок.'); alert('Ты думал ' + (new Date - time) / 1000 + 'сек')Соответствен но, что-то где-то у вас происходит слишком быстро и не дожидается загрузки файла. |
Это логично, это первое, о чём я тоже подумал.
Но проблема не так проста - из jQuery дёргается запрос $.get(), которому даётся callback. Если не вставить alert(), callback вообще не вызывается. Т.е. вообще запрос не заканчивается. |
Ни у кого идей нет, как это ловить хотя бы?
|
удалено.
|
Цитата:
|
Исходники можно посмотреть по ссылке любым js-дебаггером.
В сторону success и onload событий чьих? |
удалено.
|
Часовой пояс GMT +3, время: 04:21. |