Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№131-07-2008 16:25:01

oldfriend
Участник
 
Группа: Members
Зарегистрирован: 24-07-2008
Сообщений: 22
UA: Firefox 2.0

Передача параметра из javascript в XPCOM компонент

Всем привет.

Задача звучит просто. Мне нужно из 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?
Спасибо заранее.

Отсутствует

 

№231-07-2008 17:33:25

oldfriend
Участник
 
Группа: Members
Зарегистрирован: 24-07-2008
Сообщений: 22
UA: Firefox 2.0

Re: Передача параметра из javascript в 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;
}

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]