>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Регистрация -детали http://forum.mozilla-russia.org/viewtopic.php?id=32270 |
alex171069 > 10-03-2009 15:36:24 |
Здравствуйте уважаемые ! Хотел бы прояснить вопрос у знающих людей. |
Crazy-EyE > 10-03-2009 17:29:24 |
Эти файлы генерируются при регистрации XPCOM, которая выполняется при запуске приложения в случае, если эти файлы были удалены или при установке/удалении/отключении/включении аддона (по крайней мере если он содержит XPCOM-компоненты). xpti.dat содержит список всех известных интерфейсов. compreg.dat содержит список всех зарегистрированных XPCOM-компонентов (список файлов, список CLASSIDов и соответствие между CONTRACTIDами и CLASSIDами), а также категории. compreg.dat должен содержать информацию о самом компоненте, по крайней мере путь к файлу и CLASSID (не путать с аналогичным GUIDом интерфейса). Проще всего сделать поиск в этом файле по CLASSIDу, но лучше всего проветять то, что компонент зарегистрировался, по наличию/отсутствию соответствующего элемента в Components.classes в JavaScript. Можно попробовать удалить эти два файла, чтобы заново зарегистриовать все компоненты. Если не работает, см. Troubleshooting XPCOM components registration. |
alex171069 > 11-03-2009 10:51:13 |
Вот file.js который вызывает компонент на выполнение в нем я с помощью alert(obj); проверяю наличие объекта как вы и указывали в предыдущем посту. Выделить код Код:// вызов теста компанента function MyComponentTest() { var obj = null; try // { //alert(Components.interfaces.IMyComponent); // По Contract ID получаем доступ к модулю const cid = "@mydomain.com/XPCOMSample/MyComponent;1"; obj = Components.classes[cid].createInstance(Components.interfaces.IMyComponent); alert(obj); // Получаем указатель на объект нашего интерфейса obj = obj.QueryInterface(Components.interfaces.IMyComponent); /* } catch(err) { alert("MyComponent ERROR") ; alert(cid) ; alert(err); return; } */ // Вызываем наш метод для сложения чисел var res = obj.Add(3, 4); document.getElementById("result").value = "3 + 4 = " + res; } |
alex171069 > 11-03-2009 14:13:50 |
По каким причинам может не создаваться (прописываться) в compreg.dat CLASSID ? |
Crazy-EyE > 11-03-2009 20:58:50 |
Troubleshooting XPCOM components registration. Если компонент не регистрируется, при правильных настройках в консоли (в процессе регистрации, естесственно, например после удаления xpti.dat и compreg.dat) должно появиться сообщение "Failed to load XPCOM component ..."
Может функция вообще не вызывается? Можно попробовать добавить просто alert("x") для проверки. Еще лучше все-таки раскомментировать try, потому что в случае ошибки иначе ничего и не увидишь. Кстати, можно проверять проще, через JS-консоль.
Не стоит: все равно компонент не работает, к тому же при следующей регистрации файл заново перепишется |
alex171069 > 12-03-2009 09:33:51 |
Спасибо большое за ответ на мой вопрос ! alert(Components.interfaces.IMyComponent); --- выводит " IMyComponent" |
Crazy-EyE > 12-03-2009 15:57:44 |
Вряд ли здесь можно чем-то помочь, зная только, что компоент не регистрируется. Я постил одну и ту же ссылку уже два раза. Что отсюда пробовалось? |