Страницы: 1
Написал экстеншн для лёгкого начала разработки, прототипирования:
http://zencd.spb.ru/ext/restartless.xpi
Что делает:
— загружает динамически все субскрипты по маске *.js из директории «%firefoxprofile%/restartless-development»,
— делает это в момент, когда браузер уже полностью загружен: window.addEventListener('load', ...),
— добавляет пункт меню «Tools/Reload Restartless Development scripts» по которому старые event handlers (если таковые были проставлены) удаляются, а (уже подредактированные) субскрипты читаются заново.
По идее, субскрипты могут быть оформлены как угодно, но тогда перегрузить (reload) всё это добро эффективно без перезапуска лисы не получится. Для того чтобы reload срабатывал, нужно вешать обработчики событий таким образом (пример субскрипта):
// Обрабатывает двойной клик на табе (можно его закрыть) // // __RD stands for 'Restartless Development' __RD.addListener({ event : 'dblclick', // функция, которая, когда надо будет, возвратит XUL-объект // для которого нужно обработать событие object : function() { return getBrowser().mTabContainer }, handler : function(event) { var t = event.originalTarget var p = t.parentNode if(t && p) { if('tab' == t.localName || 'tab' == p.localName) { //gBrowser.removeCurrentTab() alert('a tab DBLLL clicked!') } } }, })
Немного жёсткая форма (места для ветвления логики не предусмотрено), но для моих идей этого пока хватает. И вроде как работает о_О
Что скажете, господа разработчики: что хорошо, чего не хватает?
Отредактировано zencd (06-01-2009 05:59:36)
Отсутствует
zencd
Рекомендую посмотреть на аналог, позволяющий загружать скрипты и оверлеи вообще во все окна, и из любых файлов/каталогов: http://userchromejs.mozdev.org/
Правда, перезагружать скрипты не позволяет (надо открывать новое окно или заново открывать окно).
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
zencd
чего не хватает?
Хотелось бы иметь текстовое поле в котором можно набить код и выполнить нажатием сочетания клавиш, и "консоль" в которой будет результат выполнения. Ну, то есть как это сделано в Extension Developer и ExecuteJS. Функцию print, понятное дело.
Чем не устраивает Extension Developer - в FF3 код выполняется без привилегий. Что не устраивает в ExecuteJS - алерты в случае ошибки (в Extension Developer ошибки выводятся в "консоль").
Оба расширения могут неправильно указывать строку с ошибкой.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Спасибо, Anton! userChrome.js получше моего будет — открыл новое окно, и мир изменился, и никаких ограничений в виде специальной регистрации обработчиков событий, полная свобода.
А что за привилегии, без которых выполняется ExtDev?
Отредактировано zencd (07-01-2009 17:17:50)
Отсутствует
Вообще-то, я рекомендовал ознакомиться с userChrome для почерпания идей к дальнейшему развитию restartless - кодовых или инфраструктурных, раз уж задан был такой вопрос "чего не хватает".
Сам я прототипирование на основе (пере)загрузки скриптов не выполняю, обычно мне надо набросать короткий код и посмотреть результат его выполнения.
А что за привилегии, без которых выполняется ExtDev?
Само ExtDev выполняется с chrome привилегиями, а вот код, который пишется в окне JavaScript Development Environment - нет. В FF2 он ещё выполнялся с chrome-привилегиями, в FF3 уже нет.
Например, если написать
то в "консоли" будет
хотя в FF2 было бы
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Вообще при правильных настройках ctrl+n даёт окно, где уже загружены последние изменения (не уверен насчёт глобальных свойств, но всё, что мне надо было, так обновлялось) - но наверное про это и так все знают?..
Само ExtDev выполняется с chrome привилегиями, а вот код, который пишется в окне JavaScript Development Environment - нет. В FF2 он ещё выполнялся с chrome-привилегиями, в FF3 уже нет.
Типа чтобы через консоль нельзя было взломать ?..
Но тогда возникает сомнение, что вообще можно написать такое расширение (иначе это какая-то неполная защита).
Однако в реализации не разбирался, так что...
Опять же всегда можно скинуть скрипт в оверлей и подгрузить (или нельзя без полной перегрузки?).
--- ---
Отсутствует
Вообще при правильных настройках ctrl+n даёт окно, где уже загружены последние изменения (не уверен насчёт глобальных свойств, но всё, что мне надо было, так обновлялось) - но наверное про это и так все знают?..
Есть ситуации, когда тестировать лучше с включенным кэшем или только в одном окне. Вообще, релоад в одном окне имеет право на жизнь, ему хоткей только прикрутить.
Типа чтобы через консоль нельзя было взломать ?..
Типа, код вычисляется в html и из html по javascript-протоколу. А в FF3 с этим строго.
Опять же всегда можно скинуть скрипт в оверлей и подгрузить (или нельзя без полной перегрузки?).
От кэширования зависит.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1