Есть ВБ-клиент (чужая). Есть веб-апп (моя). Надо, чтобы при нажатии на линк внутри веб-апп, небольшой кусок инфы (скажем, Item_ID) передавался в ВБ-клиент, чтобы там на основной форме кое-какая фигня перерисовалась.
Пока план такой (не мой ): моя страница хостится ActiveX внутри ВБ-формы . Когда юзер нажимает на линк Pick Me! в странице, страница перерисовывается, при этом линк Pick Me! заменен на симпатичную ненажимаемую иконку (шоб юзер одно и то же не мог дважды выбрать). Item_id выбранного предмета записывается как hidden element в HTML форму внутри страницы.
АктивХ, со своей стороны, реагирует на перерисовывание страницы. Получив эвент NavigationComplete (или как его там), АктивХ лезет внутрь страницы, извлекает Item_ID из формы и передает это значение в главную ВБ-форму, к-рая при этом должным образом перерисовывается.
Это как - очень гиморный способ или ОК? Какие есть лучшие предложения?
Integration of VB Client with web app - best way?
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Re: Integration of VB Client with web app - best way?
Komissar wrote:Есть ВБ-клиент (чужая). Есть веб-апп (моя). Надо, чтобы при нажатии на линк внутри веб-апп, небольшой кусок инфы (скажем, Item_ID) передавался в ВБ-клиент, чтобы там на основной форме кое-какая фигня перерисовалась.
Пока план такой (не мой ): моя страница хостится ActiveX внутри ВБ-формы . Когда юзер нажимает на линк Pick Me! в странице, страница перерисовывается, при этом линк Pick Me! заменен на симпатичную ненажимаемую иконку (шоб юзер одно и то же не мог дважды выбрать). Item_id выбранного предмета записывается как hidden element в HTML форму внутри страницы.
АктивХ, со своей стороны, реагирует на перерисовывание страницы. Получив эвент NavigationComplete (или как его там), АктивХ лезет внутрь страницы, извлекает Item_ID из формы и передает это значение в главную ВБ-форму, к-рая при этом должным образом перерисовывается.
Это как - очень гиморный способ или ОК? Какие есть лучшие предложения?
Я, в общем, собаку съел на различной интеграции IE, как внутри, так и снаружи Если есть возможность поменять твое приложение (ну или даже если нет, динамически можно страничку модифицировать), то вместо ловли OnNavigationComplete или OnDocumentComplete и прочее я бы имплементировал IDocHostUIHandler (GetExternal, Invoke, GetIDsOfNames).
Тогда в твоей хтмэлине можно писать
<a onClick="window.external.pickme('Foo', 'Bar')">
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
АААА! Вот мы в другом топике спорим о пользе тестов при приеме на работу... вот один из наших ВБ-кадров (принятый без тестов ) пишет мне, после того как я передал ему Ваш совет по интеграции:
"this interface is pretty big and there is no stock implementation I can use -> lot of work..."
я-то как раз не против изменить страницу и добавить <a onClick="window.external.pickme('Foo', 'Bar')">, а вот у чувака проблемы...
не подкинете несколько строчек sample code, чтобы его мордой ткнуть?
"this interface is pretty big and there is no stock implementation I can use -> lot of work..."
я-то как раз не против изменить страницу и добавить <a onClick="window.external.pickme('Foo', 'Bar')">, а вот у чувака проблемы...
не подкинете несколько строчек sample code, чтобы его мордой ткнуть?
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Komissar wrote:АААА! Вот мы в другом топике спорим о пользе тестов при приеме на работу... вот один из наших ВБ-кадров (принятый без тестов ) пишет мне, после того как я передал ему Ваш совет по интеграции:
"this interface is pretty big and there is no stock implementation I can use -> lot of work..."
я-то как раз не против изменить страницу и добавить <a onClick="window.external.pickme('Foo', 'Bar')">, а вот у чувака проблемы...
не подкинете несколько строчек sample code, чтобы его мордой ткнуть?
Увольнять нах. С треском, ибо либо глуп, либо врет.
1) Ни один из полутора десятков методов в этом интерфейсе не является обязательным для имплементирования.
2) В вашем случае надо только один - GetExternal, который будет состоять из двух строчек
ppDispatch = this; (в случае если IDispatch target это сам хост и есть, у меня так обычно и выходило)
return S_OK;
3) GetIDsOfNames и Invoke это, насколько должно быть известно каждому имеющему COM у себя в резюме методы IDispatch, примеров к которым жопой ешь, извиняюсь за выражение, так ему и передайте
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
вот что чувак написал мне сегодня"я:
I still don't think that implementing that interface is the way to go. It is not available in vb (the MSHTML object model is different for the vb side of things) and I since I am hosting the web browser in a dialog I don't have access to the client site initialization.
??? WTF?
I still don't think that implementing that interface is the way to go. It is not available in vb (the MSHTML object model is different for the vb side of things) and I since I am hosting the web browser in a dialog I don't have access to the client site initialization.
??? WTF?
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Komissar wrote:вот что чувак написал мне сегодня"я:
I still don't think that implementing that interface is the way to go. It is not available in vb (the MSHTML object model is different for the vb side of things) and I since I am hosting the web browser in a dialog I don't have access to the client site initialization.
??? WTF?
Я же говорю - увольнять. "MSHTML Object model" тут вообще непричем, это раз. Причем тут диалог? Это два. Что, в VB ну никак нельзя сказать ((ICustomDoc)htmlDocument).SetUIHandler()?
Индус?
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2