>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Доступ к DOM из npapi плагина http://forum.mozilla-russia.org/viewtopic.php?id=44428 |
int0 > 10-05-2010 00:04:47 |
Здравствуйте. Подскажите пожалуйста, как можно обращаться к DOM модели html страницы в NPAPI плагине. Например, мне надо в плагине найти какой то определенный элемент страницы, как это сделать? |
banbot > 10-05-2010 02:47:38 |
Хм, типа так? |
int0 > 10-05-2010 11:44:33 |
Правильно ли я понимаю, что это будет совместимо только с ff ? Например, для Chrome работать не будет?
Только я очень плохо знаком еще с NPAPI и что то у меня не получается это реализовтаь. Не мог бы кто нибудь написать эти 3 строчки кода, чтобы они правильно работали? |
Elexander > 10-05-2010 16:29:37 |
int0 пишет
Нет. Все браузеры за исключением IE поддерживают технологию NPRuntime. Приблизительный код на Delphi: Выделить код Код:function GetElementByID(id: string): PNPObject; var window: PNPObject; vr1, vr2: TNPVariant; begin NPP_GetValue(Instance, NPNV_WINDOW_NPOBJECT, @window); NPN_GetProperty(Instance, window, NPN_GetStringIdentifier('document'), @vr1); STRINGZ_TO_NPVARIANT(id, vr2); NPN_Invoke(GetInstance, vr1.objectValue, NPN_GetStringIdentifier('getElementById'), @vr2, 1, vr1); Result := vr1.objectValue; end; Только нужно не забыть освободить объект после использования. |
int0 > 10-05-2010 23:46:05 |
Спасибо, тут действительно "приблизительный код" но он все равно мне очень помог. Делаю так Выделить код Код:NPVariant vr,vr2; STRINGZ_TO_NPVARIANT("style",vr); npnfuncs->invoke(inst,document,npnfuncs->getstringidentifier("getElementsByTagName"),&vr,1,&vr2); В vr2 теперь поидее содержится массив объектов,но как с ним работаь, например, чтобы узнать размер массива?В js сделал бы так |
Elexander > 12-05-2010 10:53:58 |
Тут все аналогично. |