firefox的插件如何调用网页上的javascript函数?

阅读:4328回复:5
2010-11-10 14:15
写私信
楼主#
用npruntime开发firefox下的plugin,我从昨天试验在插件中调用网页中的js函数,就是类似于ActivX的event,我的代码是这样的,但是还没有看到效果,能指教一下要怎么改吗,多谢!

网页有个函数
fucntion listener(str)
{
alert(str);
return 0;
}




插件中某个方法的实现函数中添加如下:

NPObject oWin, *poJsfun;
NPIdentifier idLis;
NPVariant vJsfun, vArgs[1], vRst;
NPN_GetValue(mNpp, NPNVWindowNPObject, &oWin);
idLis = NPN_GetStringIdentifier("listener");
NPN_GetProperty(mNpp, &oWin, idLis, &vJsfun);//这一行调试会挂掉
STRINGZ_TO_NPVARIANT("aaaaa", vArgs[0], &vRst);
NPN_InvokeDefault(mNpp, NPVARIANT_TO_OBJECT(vJsfun), vArgs, 1, &vRst)
2010-11-10 14:15
写私信
1楼#
LZ的问题解决了么?能贴出来共享么?
2010-11-10 14:15
写私信
2楼#
搞这个的都太小气,会也不告诉别人怎么解决的,鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!


刚刚找到个更简陋的方法,可以曲折实现

我的愿意是在plugin中找到js函数的对象,现在不能找到,只能用单独的方法把js函数传进来,然后NPN_InvokeDefault时就可以,因为这个函数着呢个只有一个参数是难搞的,也是几乎找不到demo的,就是在plugin中获取js函数对象,现在用另外的接口传进来,就不要操心如何获取的问题了,这样也是可以的



鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!鄙视他们!
2010-11-10 14:15
写私信
3楼#
能不能给个详细点的说法呢。
2010-11-10 14:15
写私信
4楼#
在开发firefox插件的过程中,在插件内可能要调用js函数,实现事件通知。

我目前所掌握的方法(参照mplayer firefox插件):

插件端调用 void NPP_URLNotify(NPP         instance,
                   const char* url,
                   NPReason    reason,
                   void*       notifyData);
方法, url函数就是要调用的 js函数,如"javascript:onfunc(arg);"

在 页面内就要有对应的 js函数 onfunc(arg)