views:

321

answers:

2

I currently have an ActiveX control which links in many c/c++ dlls. The problem is that we now need this control to run on browsers other than IE (most importantly Firefox).

As I see it I have the following options:

  • Write the control as a firefox plugin. This seems like it will be the quickest but would then tightly couple us to Mozilla.
  • A complete rewrite in Silverlight or flex. Due to the size of our control would probably take too long.
  • Create a mixed client and server side solution, using JavaScript for the UI, similar to Google Docs.

Just wondering if anyone else has attempted to solve the problem of porting ActiveX controls? And, if any, what advice they could offer?

Thanks in advance

+5  A: 

Make it a Netscape Plugin (see http://www.mozilla.org/projects/plugins/) and it will work with all mainstream Windows browsers except IE (and browsers on other platforms as well, if you can port the code to those platforms).

RichieHindle
Sure, this is what I meant by firefox plugin, but will this not only restrict me to running firefox?Thanks, I thought this would be the only solution
gonzohunter
No, the Netscape Plugin architecture is supported by all mainstream browsers with the exception of IE; for that you can use https://developer.mozilla.org/en/ActiveX_Control_for_Hosting_Netscape_Plug-ins_in_IE or just keep using your current ActiveX interface.
RichieHindle
Just FYI, there are a lot of subtle differences in NPAPI implementations across browsers, so you'll need to do a lot of test-and-debug.
jeffamaphone
A: 

Use FireBreath: http://firebreath.googlecode.com

Its designed to solve exactly your problem; you implement everything once under the firebreath abstraction. if there are any features you need that aren't supported or you don't know how to get working with FireBreath, the dev list is really good about answering queries quickly. And, since it's open source (but licensed so that you don't have to open source your code), you can make changes yourself as well.

Anything written using firebreath will work on IE, Firefox, Chrome, Safari, and possibly Opera (Opera doesn't 100% correctly implement NPAPI; with a little work you can make it all compatible).

Taxilian