Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# Qt Netscape Plugin Extension

The Qt Netscape Plugin software makes it easy to write browser plugins that can be used on both Unix/Linux and MS-Windows, in Netscape, Mozilla, and any other web browser supporting Netscape's LiveConnect protocol. Modern versions of MSIE do not support this protocol. Use the ActiveQt Framework to develop plugins for these browsers.

## Information

The Netscape Plugin Extension consists of the follow classes:

- QNPlugin
- QNPInstance
- QNPWidget
- QNPStream

## How-to

1. Download the Plugin SDK from Netscape, and copy the following files from there to `$QTDIR/extensions/nsplugin/src`
   - `common/npwin.cpp`
   - `common/npunix.c`
   - `include/npapi.h`
   - `include/npupp.h`
   - `include/jri.h`
   - `include/jri_md.h`
   - `include/jritypes.h`
2. Build the Netscape Plugin extension library, found in the `extensions/nsplugin/src` directory of your Qt distribution. This produces a static library to be linked with your plugin code.
3. Read the plugin class documentation, and examine the example plugins.
4. Do most of your development as a stand-alone Qt application - debugging Netscape Plugins is cumbersome. You may want to use `signal(2)` in your plugin to enable core-dumps if your browser disables them.
5. Note the platform-specific build steps below.
6. Read about the raw plugin interface in Netscape's handbook.
7. If files viewed by a plugin are provided by an HTTP server (using a http://... URL) then the server must be configured to send the correct MIME type for the file, e.g. by editing Apache's `mime.types` file. If the files are viewed via a //... URL, then the browser will use the filename extension to decide the file type (and hence the plugin to load) - the user may need to set the filename extension in the Helpers or Applications section of their browser preferences.

### Building under X11

- The Makefiles in the examples are appropriate for UNIX/X11.
- The user must install the resulting Shared Object in the Plugins directory of the browser.

### Building under Windows

- For Netscape plugins to work, Qt needs to be in the system DLL path or be compiled into the plugin as a static library.
- Plugins must be named `np` name`.dll`, or the browser will ignore them.
- The link step must include:
  - `/def:`name`.def`
  - `/dll`
  - a compiled resource file defining the file/MIME types accepted by the plugin.
- The user must install the resulting DLL in the Plugins directory of the browser.

## Known Bugs and Limitations

The Qt-based LiveConnect Plugin binding code has a number of bugs and limitations, but is sufficiently stable for many production applications.

- Keyboard input only works in seconday windows (e.g. dialogs created by the plugin).
- You should not expect modality between the plugin and the browser to work.
- Netscape 4.78 on Unix/X11 tends to terminate with a bus error.
- Opaque resize behaviour is erratic due to browser behavior.