Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2010, 20:46
Новичок на форуме
Отправить личное сообщение для vitalif Посмотреть профиль Найти все сообщения от vitalif
 
Регистрация: 25.11.2010
Сообщений: 4

Зависимость работы асинхронного кода от 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 всё отлично работает всегда.

Чтобы пробовать сохранить файл, сначала нужно зарегистрироваться (ссылка в правом верхнем углу). Чтобы открыть - не обязательно...

Если кто-нибудь знает или подозревает, ЧТО ЭТО ЗА НАФИГ, расскажите, пожалуйста?
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2010, 20:54
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

alert приостанавливает выполнение кода
var time = new Date();
alert('Подожди пару секунд и нажми ок.');
alert('Ты думал ' + (new Date - time) / 1000 + 'сек')
Соответствен но, что-то где-то у вас происходит слишком быстро и не дожидается загрузки файла.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2010, 20:57
Новичок на форуме
Отправить личное сообщение для vitalif Посмотреть профиль Найти все сообщения от vitalif
 
Регистрация: 25.11.2010
Сообщений: 4

Это логично, это первое, о чём я тоже подумал.
Но проблема не так проста - из jQuery дёргается запрос $.get(), которому даётся callback.
Если не вставить alert(), callback вообще не вызывается.
Т.е. вообще запрос не заканчивается.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2010, 12:40
Новичок на форуме
Отправить личное сообщение для vitalif Посмотреть профиль Найти все сообщения от vitalif
 
Регистрация: 25.11.2010
Сообщений: 4

Ни у кого идей нет, как это ловить хотя бы?
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2010, 12:59
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 15:20.
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2010, 13:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vitalif
Ни у кого идей нет, как это ловить хотя бы?
Что ловить-то? Вы даже код не показали.
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2010, 19:52
Новичок на форуме
Отправить личное сообщение для vitalif Посмотреть профиль Найти все сообщения от vitalif
 
Регистрация: 25.11.2010
Сообщений: 4

Исходники можно посмотреть по ссылке любым js-дебаггером.
В сторону success и onload событий чьих?
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2010, 20:06
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 15:20.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск