Страницы: 1
Какие задачи вами возлагались на XPCOM-компонент и на COM-сервер ? :sick:
В com находится реализация основной фукнциональности, а XPCOM я использую, т.к. не знаю как иначе обратится к com объекту написанному ранее из расширения Firefox. Если кто-нибудь знает как это сделать проще буду очень презнателен.
Может используется C++ Runtime (msvcrt или как там её) с динамической линковкой? Тогда в XP, где стоит Visual Studio, все работает, т.к. есть нужные динамические библиотеки, а в висте их нет.
Возможно. Может кто-нибудь подскажет где это посмотреть и точно убедится статическая или динамическая линковка и потом выставить статически если нужно ? Я использую Visual Studio 2005.
Добрый день,
такая проблема - после инсталляции расширения в FF под Вистой в консоли появляется сообщение Failed to load XPCOM component - соответственно моё расширение не работает. В XP всё проходит отлично. В чём может быть дело?
Я использую XPCOM компоненту для взаимодействия расширения с внешним модулем реализованным в в виде DLL c com сервером
Заранее спасибо.
У меня в XUL фалй был следующий код
<toolbox id="navigator-toolbox"> <toolbar class = "chromeclass-directories" id="my_bar" toolbarname="Toolbar" tbautostretch="always" allowevent="true" context="toolbar-context-menu" persist="collapsed" collapsed="false">
Тулбар автоматически после установки не появляется, добалвял аттрибут hidden="false", тот же результат
Здраствуйте,
Есть реализованный под FF тулбар, но проблема состоит в том, что после установки расширения для его появления необходимо зайти в Вид->Панели инструментов и там сделать активным. Необходимо это сделать автоматически без участия пользователя.
Заранее спасибо за любые идеи и коментарии.
код то там не маленький, а кусок я даже не знаю какой выложить.
Просто я считал, что из-за кода такой ошибки не должно быть. Просто выдаст ошибку другую, или в крайнем случае FireFox упадёт.
Может быть такое елси там используется интрефейс закрытый в тройке? Если да то как его быстро выявить?
Всем здраствуйте.
XPCOM компонента прекрасно регистрируется и работает в FireFox 3. Решил проверить работу расширения на FireFox 2. Здесь выдаётся предупреждение
MyExtension is unable to initialize a toolbar.
Reason: Cannot register component
В консоле ошибок появляется следующая запись:
Ошибка: Components.classes[contractid] has no properties
Источник: chrome://MyExtension/content/MyExtension.js
Строка: 1411
При этом я не использовал никаких новых возможностей FireFox 3, отсутствующих в двойке.
В чём может быть причина этого или хотя бы в каком направлении мне смотреть?
Доброго врмени суток,
В XUL файле есть следующее описание тулбара:
<toolbox id="navigator-toolbox">
<toolbar class = "chromeclass-directories"
id="bar"
toolbarname="Toolbar"
persist="collapsed"
tbautostretch="always"
allowevent="true"
context="toolbar-context-menu"
collapsed="false">
<observes element="bar" attribute="collapsed"
onbroadcast="ToolbarCollapsedEventHandler();" /> - in XUL file
так вот в js файле в функции ToolbarCollapsedEventHandler(); при вызове getAccessibleFor(window.content.document); возвращается null при загрузке FireFox.
Как-нибудь можно это обойти?
…Проблема решена.
Дело в том, что nsIAccessibilityService больше не является scriptable, вместо него следует использовать nsIAccessibleRetrieval.
попробовал такой вариант
var Service = Components.classesByID["{DE401C37-9A7F-4278-A6F8-3DE2833989EF}"];
таже самая ошибка, хотя DE401C37-9A7F-4278-A6F8-3DE2833989EF указано в самом nsIAccessibilityService.h
Перепробовал всё - ничего не помогает !!!
Может это глюк самого FireFox?
Собственно вот код, где возникает ошибка:
const accServiceID = '@mozilla.org/accessibilityService;1';
const accServiceIF = Components.interfaces.nsIAccessibilityService;
const accService = Components.classes[accServiceID].getService(accServiceIF); - кокретно указывает на эту строку
var acc = accService.getAccessibleFor(window.content.document);
var dom_window = acc.QueryInterface(Components.interfaces.nsIAccessibleDocument);
Да всё уже испраивл - там синтаксическая и была. Только этот премер я для теста делал. А само расширение теперь выдаёт ошибку не синтаксическу. Её рписание в теме "Перевод расширения на Gecko 1.9 "
Да, спасибо.
Всё так и сделал, нашёл синтаксическую.
Сообщение в кщнсоли FireFox 3.0.3
Ошибка: [Exception... "Component returned failure code: 0x80570018 (NS_ERROR_XPC_BAD_IID) [nsIJSCID.getService]" nsresult: "0x80570018 (NS_ERROR_XPC_BAD_IID)" location: "JS frame :: chrome://handypassword/content/handypassword.js :: InitHPFiller :: line 1199" data: no]
Источник: chrome://handypassword/content/handypassword.js
Строка: 1199
Может кто в курсе что за ошибка и как с ней бороться.
Заранее спасибо!
14-10-2008 13:35:28
Что характерно, в FF2 такой ошибки не возникает
Т.е как я понимаю, если в какой-то функции будет ошибка, то весь скрипт не будет работать
Имеется файл MyExtNavigatorOverlay.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://MyExt/content/MyExt.css" type="text/css"?>
<overlay id="MyExtNavigatorOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://MyExt/content/MyExt.js"/>
...
<toolbarbutton
id="extff_Btn"
container="true"
crop="right"
image="chrome://MyExt/content/Pict.png"
observes="true"
oncommand="Test();"
tooltiptext="Ok button"/>
... и.т.д.
В файле MyExt.js
function Test()
{
alert('OK');
}
Но при нажатии кнопки на тулбаре ничего непроисходит.
У меня стоит FireFox 3.0.3
Проблема решена.
Нужно было препроцессору установить:
XPCOM_GLUE_USE_NSPR
MOZILLA_STRICT_API
XP_WIN
XP_WIN32
10-10-2008 14:29:22
Только в FireFox не хочет регистрироваться.
Выдаёт:
«Моё расширение» не будет установлен, так как он не обеспечивает безопасные обновления
10-10-2008 14:30:35
Я впринципе расчитывал что достаточно перекомпилировать с Gecko 1.9
После установки препроцессору XPCOM_GLUE 1 как указано в
http://developer.mozilla.org/en/XPCOM_Glue
стали выдаваться следующие ошибки:
error LNK2001: unresolved external symbol "public: void __thiscall nsCOMPtr_base::assign_from_qi(class nsQueryInterface,struct nsID const &)" (?assign_from_qi@nsCOMPtr_base@@QAEXVnsQueryInterface@@ABUnsID@@@Z)
error LNK2019: unresolved external symbol "public: void __thiscall nsCOMPtr_base::assign_from_qi(class nsQueryInterface,struct nsID const &)" (?assign_from_qi@nsCOMPtr_base@@QAEXVnsQueryInterface@@ABUnsID@@@Z) referenced in function "public: __thiscall nsCOMPtr<class nsIDOMNode>::nsCOMPtr<class nsIDOMNode>(class nsQueryInterface)" (??0?$nsCOMPtr@VnsIDOMNode@@@@QAE@VnsQueryInterface@@@Z)
error LNK2001: unresolved external symbol "public: void __thiscall nsCOMPtr_base::assign_from_qi(class nsQueryInterface,struct nsID const &)" (?assign_from_qi@nsCOMPtr_base@@QAEXVnsQueryInterface@@ABUnsID@@@Z)
error LNK2001: unresolved external symbol "public:
…Дополнение написано на С++ и является тулбаром. Для этого используётся конструкции из Gecko 1.8. Но с Gecko 1.9 проект не собирается. Выдаётся вышеописанная ошибка. Хотя в принципе NS_NewGenericModule2 - внутреняя функция в gechko. В проекте используется макрос NS_IMPL_NSGETMODULE - на него и указывает ошибка.
#include "StdAfx.h"
#include "nsigenericfactory.h"
#include "nsHandyPassword.h"
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHandyPassword)
static nsModuleComponentInfo components[] =
{
{
HANDYPASSWORD_CLASSNAME,
HANDYPASSWORD_CID,
HANDYPASSWORD_CONTRACTID,
nsHandyPasswordConstructor
}
};
NS_IMPL_NSGETMODULE("nsHandyPassworModule", components)
10-10-2008 07:35:55
Также прилинковал следующие библиотеки:
plds4.lib
plc4.lib
xpcomglue_s.lib
xpcom.lib
nspr4.lib
Уточнияю.
Существовало дополнение на основе Gechko 1.8 прекрасно работающее в FF версии до 3. Теперь встала задча пределать его для FF3.
В результате после замены библиотек выдаётся вышеописанная ошибка.
Срочно нужна помощь по следующему вопросу.
При переводе расширения для FF3 установил Gecko 1.9
В результате стала выдаваться ошибка
'NS_NewGenericModule2': identifier not found
Страницы: 1