Страницы: 1
Доброй ночи, уважаемые форумчане.
Вот задался вопросом, как менее криво можно изобразить хранилище данных в тулбаре? У меня тулбар получает данные с сервера, а поскольку пользователь может запусть 2 Firefox - тулбара станет 2... .а копия данных должна быть одна. Сейчас у меня каждый тулбар имеет свое хранилище и после получения данных тулбар посылает уведомление обсерверам остальных тулбаров (в других процессах фф), передавая им данные. При изменении \ удалении данных тулбар сообщает всем остальным своим копиям что сделать надо вообщем такой велосипед получился и он мне не нравится. Скажите, есть ли способы сделать что-то общее одно?
Отсутствует
Если данных мало, и они не накапливаются, то nsIPrefBranch (что то вроде реестра виндоус, только для всех операционных систем). Записи в этом "реестре" можно увидеть по адресу about:config
Иначе: nsILocalFile. Просто записывать в общий фаил.
Отредактировано lemax (08-04-2009 02:34:05)
Отсутствует
Если данных мало, и они не накапливаются, то nsIPrefBranch (что то вроде реестра виндоус, только для всех операционных систем). Записи в этом "реестре" можно увидеть по адресу about:config
Иначе: nsILocalFile. Просто записывать в общий фаил.
Данных не очень много, но реализовывать свою БД на файлах желания не много. Поднимать sqlite тоже не хочется, т.к. данные быстро устаревают и нуждаются в динамичном обновлении ;(
Что за данные-то хоть?
Да вообще теоретический вопрос. Сейчас данные - урлы \ ключи-хеши \ информация о страницах по урлам \ статистика всякая. Ну и нелогично когда статистика в одном тулбаре одна, а в соседнем окне другая ;(
Сейчас вот проверку почтовых ящиков делаю на новые сообщения на XBL, ну и глупо как-то получится, если каждый тулбар будет лазить и почту проверять... Хочется по нормальному, но пока не придумал как.
Отсутствует
Может имеет смысл покопать в сторону расширений, которые ставятся в папку приложения (и доступны во всех профилях)?
Ведь по идее у них как раз общее хранилище должно быть доступно (но не уверен).
--- ---
Отсутствует
https://developer.mozilla.org/en/Workin … ta_sharing
Отредактировано Crazy-EyE (11-04-2009 13:59:40)
Отсутствует
Может имеет смысл покопать в сторону расширений, которые ставятся в папку приложения (и доступны во всех профилях)?
Это несколько не то. Т.е. расширения то доступны, но данные в них не общие.
Попробуйте посмотреть расширение Clippings.
Посмотрел, автор сделал, как предлагает Crazy-EyE.
Crazy-EyE
Посмотрел\почитал. Примерно это меня и интересует, однако не совсем подходит в моем случае. Как я понимаю XPCOM компоненты регистрируются в момент установки расширения, подхватываясь браузером из папки /components? Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Отсутствует
Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Такой возможности нет, и она обычно не нужна. Можно подгружать JS-скрипты через mozIJSSubScriptLoader.
А зачем вам это нужно?
Отсутствует
Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Такой возможности нет, и она обычно не нужна. Можно подгружать JS-скрипты через mozIJSSubScriptLoader.
А зачем вам это нужно?
Хочу забиндить XBL на кнопочку, и чтобы она сразу подняла глобальное хранилище для других копий браузера (если их вдруг начнут запускать) или приципилась уже к существующему хранилищу. Вся "прелесть" в том чтобы можно было подключать XBL подтянутые из сети (изображаю "плагины" для расширений). Плагины могут быть разные и сразу не угадаешь какие будут... поэтому одинаковые хранилища для всех не подойдут. Вот ищу как это сделать без XPCOM или возможность как это сделать налету.
Отсутствует
Тогда можно просто сделать один большой общий XPCOM-компонент, который будет управлять всеми хранилищами (просто JS-объектами).
Я бы взял код отсюда, раскомментировал строчку
а в плагине делал так:
var sharedObject = Components.classes["..."].getService().wrappedJSObject; if (!sharedObject.PLUGIN_NAME) { // Init sharedObject.PLUGIN_NAME = { storage: {} }; } var storage = sharedObject.PLUGIN_NAME.storage;
Отсутствует
Как я понимаю XPCOM компоненты регистрируются в момент установки расширения, подхватываясь браузером из папки /components? Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Есть такая возможность.
Вся "прелесть" в том чтобы можно было подключать XBL подтянутые из сети (изображаю "плагины" для расширений). Плагины могут быть разные и сразу не угадаешь какие будут... поэтому одинаковые хранилища для всех не подойдут. Вот ищу как это сделать без XPCOM или возможность как это сделать налету.
Т. е., непривилигерованный xbl должен "поднимать" хранилище, реализованное привилегированным кодом ?
Нет, без XPCOM, скорее всего, никак.
Хотя, если код "плагинов" не обязан быть привилегированным, в FF3 и старше вроде есть какие-то средства для хранения данных web-приложений.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Crazy-EyE
Можно из произвольной директории, но Firefox все равно придется перезапускать
Ошибаетесь, можно и без перезагрузки.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Через nsIComponentRegistrar? Может, и можно. Только нужно ли?
P.S. После таких утвердительных заявлений обычно ожидается ссылка.
Отсутствует
Через nsIComponentRegistrar?
Верно.
После таких утвердительных заявлений обычно ожидается ссылка.
: )
Очень несложно поставить эксперимент, чтобы проверить. Но гугл недалеко, если что.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1