Страницы: 1
Всем привет.
Задача звучит просто. Мне нужно из javascript передать в компоненту XPCOM строку. Делаю так:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); const cid = "@mydomain.com/XPCOMSample/FF_component;1"; obj = Components.classes[cid].createInstance(); obj = obj.QueryInterface(Components.interfaces.FF_component); var MyString = "Test string"; obj.GetDOM(MyString);
Соответственно функция в компоненте выглядит так:
NS_IMETHODIMP FF_component::GetDOM(nsEmbedString *Domstr, PRInt32 *_retval) { return NS_OK; }
Domstr что-то да содержит, ибо там не ноль. Однако любые пляски с бубном вокруг этой штуки не увенчались успехом.
Вопросы:
1. Как сконвертить nsEmbedString во что-то, что похожее на строку, на которую можно посмотреть? В идеале было бы преобразование в stringstream.
2. Возможно есть уже работающая схема передачи параметра из JS в XPCOM?
Спасибо заранее.
Отсутствует
Проблема решена:
NS_IMETHODIMP MyComponent::GetDOM3(nsEmbedString *Domstr, PRInt32 *_retval) { std::stringstream ss; nsEmbedCString strOut; NS_UTF16ToCString( nsEmbedString(*Domstr), NS_CSTRING_ENCODING_UTF8, strOut); ss << strOut.get(); MessageBox(NULL, ss.str().c_str(), "", MB_OK); return NS_OK; }
Отсутствует
Страницы: 1