Страницы: 1
Собственно есть раширение ввиде тулбара, у него есть JS обрабатывающий нажатия кнопок и т.п. Он в свою очередь создаёт и вызывает XPCOM объект написаный на C++. Здесь всё шеколадно, а вот как сделать наоборот? Что бы из этого объекта вызвать функции того JS? Я подозреваю что это не сложно, но что то не могу найти ни как....
Отсутствует
1) оперировать придётся интерфейсами а не функциями. Интерфейсы js нужно передать в C++ код, чтобы оттуда с ними работать.
2) описываете на XPIDL интерфейс callback-а:
[scriptable, uuid(...)]
interface ICallBack : nsISupports
{
void SaySomething(in AString message);
};
, и метод вашего компонента, работающий с этим интерфейсом
[scriptable, uuid(...)]
interface IYourComponent : nsISupports
{
void workWithCallBack(in ICallBack cb);
};
3) на javascript создаёте объект реализующий интерфейс callback-а
var listener = {
SaySomething : function(message) {
alert(message)
}
};
4) пишете C++ код по работе с интерфейсом:
NS_IMETHODIMP СYourComponent::workWithCallBack(ICallBack* cb)
{
cb->SaySomething(NS_LITERAL_STRING("C++ code is speaking"));
}
что-то типа того, за работоспособность этого кода не ручаюсь, на ходу придумывал, но идея такая.
Ещё можно почитать - http://groups.google.ru/group/netscape. … rt=1&num=3
Отсутствует
Спасибо. Всё работает. Я уже почти догадался как это сделать, когда ответ прочёл. А Вы потвердили мою догадку.
Отсутствует
Страницы: 1