Plugins 用于Firefox、Chrome和Safari的浏览器帮助对象(BHO)

Plugins 用于Firefox、Chrome和Safari的浏览器帮助对象(BHO),plugins,cross-browser,firefox-addon,google-chrome-extension,npapi,Plugins,Cross Browser,Firefox Addon,Google Chrome Extension,Npapi,我有一个工作浏览器助手对象(BHO),它本质上是一个基于ATL的COM组件。当组件在注册表中注册为BHO时,internet explorer调用SetSite()方法,通过IWebBrowser接口传递一个对象,它还公开一组可以订阅的事件,例如OnDocumentComplete,它允许我们访问InnerHTML 我正在为非IE浏览器Firefox、Chrome和Safari寻找相同的东西。我知道我应该从firefox扩展开始 是否可以使用跨浏览器SDK(如NPAPI)实现同样的功能?(因为

我有一个工作浏览器助手对象(BHO),它本质上是一个基于ATL的COM组件。当组件在注册表中注册为BHO时,internet explorer调用SetSite()方法,通过IWebBrowser接口传递一个对象,它还公开一组可以订阅的事件,例如OnDocumentComplete,它允许我们访问InnerHTML

我正在为非IE浏览器Firefox、Chrome和Safari寻找相同的东西。我知道我应该从firefox扩展开始

  • 是否可以使用跨浏览器SDK(如NPAPI)实现同样的功能?(因为每个浏览器都有自己的SDK和扩展开发平台,如cocoa、Pepper API等,而且大多数浏览器都支持NPAPI。)

  • 如何订阅事件,以便当用户导航到其他站点时,浏览器可以调用SetSite()类函数


    • 第一个问题的答案很简单:不,使用npapi不可能做到这一点。有关插件(NPAPI)和扩展之间区别的更多信息,请参阅。如果有一些事情你不能用你需要做的扩展来做(例如,要求C++代码工作),你可以把这些东西放在NAPAPI插件中,并从扩展中使用它。如果你决定走那条路线,我建议你看看

      至于第二个,它将根据您为哪个浏览器编写扩展而有所不同;是的,每个浏览器都需要不同。在google上快速搜索“firefox扩展事件页面加载”会得到一个新的结果