
16.06.2011, 10:48
|
 |
Новичок на форуме
|
|
Регистрация: 07.06.2009
Сообщений: 8
|
|
Помогите с отладкой "прилетевших" скриптов
Добрый день.
Столкнулся с такой проблемой не знаю что делать.
js скрипт(ы) подгружаются динамически с помощью ajax jQuery (или короткого метода $.getScript() ). Скрипт выполняется на странице, но в firebug во вкладки "сценарии" все "прилетевшие" через аякс скрипты не отображаются почему-то и я не могу отлаживать их. Хотя раньше подгруженные скрипты отображались в firebug и их можно было отлаживать. Попробовал уже все, что в голову пришло, прошу помочь, если кто-то сталкивался с этим.
Стоит последняя стабильная версия firefox 4.0.1 и последняя стабильная версия firebug 1.7.2.
Выглядит это приметно так:
http://s41.radikal.ru/i091/1106/48/d747ca76ae51.gif
|
|

16.06.2011, 10:57
|
 |
Профессор
|
|
Регистрация: 15.02.2011
Сообщений: 471
|
|
Видимо скрипты подключаются в виде текста в теге <script>, а не как ссылка.
|
|

16.06.2011, 11:09
|
 |
Новичок на форуме
|
|
Регистрация: 07.06.2009
Сообщений: 8
|
|
Они отрабатывают, выполняя логику и манипулируя DOM, я думаю, что если бы они были как текст, то они бы не выполнялись.
Пробовал подключать вручную через метод $.ajax() с явным указанием dataType, а не $.getScript().
$.ajax({
'type' : "get",
'dataType' : 'script',
'url' : url,
'cache' : true,
'scriptCharset ' : 'UTF-8',
'global ' : true,
'success' : function(data, status, XHR){
alert( "success data: " + data );
alert("success status: " + status);
},
'error' : function(XHR, status){
alert("error status: " + status);
},
'complete' : function(XHR, status){
alert("complete status: " +status);
}
});
Но тоже самое.
Хочу отметить, что раньше все работало. Сейчас убрал вообще все, оставив простенький пример с подгрузкой и все равно не работает.
|
|

16.06.2011, 19:41
|
 |
Профессор
|
|
Регистрация: 15.02.2011
Сообщений: 471
|
|
Недавно столкнулся с точно такой же проблемой. В основном программирую на чистом JS, потому как применение фреймворков бывает неуместно, либо запрещено заказчиком.
Сначала написал точно такую же функцию как в Вашем решении, но представил ситуацию когда необходимо подключить подряд более чем 2-3 файла - получается весьма немаленькая "лесенка" из вложенных коллбэков, поэтому от этого способа я отказался и прибегнул к синхронному AJAX запросу.
В таком случае в ответе приходит само тело файла:
<script type="text/javascript">{your script here}</script>
В список скриптов такая декларация не попадает, а в теле HTML нельзя ставить точки останова, поэтому отлаживать на продакшне может оказаться весьма проблематично (если конечно нету нормальных обработчиков ошибок). В любом случае код проверяется юнитестами в специально разработанной для этого среде, поэтому данное неудобство особой роли не играет. Зато серьезно испортит жизнь тем кто захочет сломать Ваше приложение (особенно если пропустить код через обфускатор).
А вообще если приложение требует повышенной безопасности, то лучше все операции с алгоритмами выполнения, которые нужно скрыть от лишних глаз, предоставить серверу, а результаты запрашивать через SOAP или XML-RPC.
Последний раз редактировалось DreamTheater, 16.06.2011 в 21:39.
|
|

16.06.2011, 23:51
|
 |
Новичок на форуме
|
|
Регистрация: 07.06.2009
Сообщений: 8
|
|
$.ajax() тоже наверное синхронную подгрузку предполагает...
Важного ничего нет тут, просто делаю для внутреннего использования загрузчик js и css, который сам будет подтягивать логику и стили на страницу, если на ней есть какие-то элементы компонентов, чтобы это все было автоматизировано и не подключать на сервере в php скрипты явно.
Спасибо за ответы!
|
|

17.06.2011, 11:19
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от DreamTheater
|
Зато серьезно испортит жизнь тем кто захочет сломать Ваше приложение
|
А ещё серьёзно испортит жизнь тем, у кого медленное соединение. Т.к. браузер зависнет наглухо на то время, пока будет качать скрипты.
|
|

17.06.2011, 20:01
|
 |
Профессор
|
|
Регистрация: 15.02.2011
Сообщений: 471
|
|
Сообщение от Kolyaj
|
А ещё серьёзно испортит жизнь тем, у кого медленное соединение. Т.к. браузер зависнет наглухо на то время, пока будет качать скрипты.
|
В любом случае раз скрипты загружаются, значит они для чего-то нужны, а раз нужны - приложение без них не будет работать, поэтому загрузятся они синхронно или асинхронно не имеет никакого значения (асинхронно имеет смысл только отправлять/запрашивать данные с сервера). Просто нужно на несколько секунд отвлечь внимание пользователя каким-нибудь симпатичным троббером.
Последний раз редактировалось DreamTheater, 17.06.2011 в 20:03.
|
|

17.06.2011, 22:22
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от DreamTheater
|
В любом случае раз скрипты загружаются, значит они для чего-то нужны, а раз нужны - приложение без них не будет работать, поэтому загрузятся они синхронно или асинхронно не имеет никакого значения
|
Вы забываете, что в браузере не только ваш сайт. И пока сайт грузится в обычном режиме, я могу смотреть другой сайт в другой вкладке. В вашем случае нельзя будет сделать ничего. Это не говоря о том, что подвисшая по любой причине программа бесит неимоверно.
|
|

17.06.2011, 22:30
|
 |
Профессор
|
|
Регистрация: 15.02.2011
Сообщений: 471
|
|
Сообщение от Kolyaj
|
Вы забываете, что в браузере не только ваш сайт. И пока сайт грузится в обычном режиме, я могу смотреть другой сайт в другой вкладке. В вашем случае нельзя будет сделать ничего. Это не говоря о том, что подвисшая по любой причине программа бесит неимоверно.
|
Тогда единственно оптимальным решением остается асинхронное подключение скриптов с последующим вызовом callback.
|
|
|
|