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:
How-to
- 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
- 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.
- Read the plugin class documentation, and
examine the example plugins.
- 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.
- Note the platform-specific build steps below.
- Read about the raw plugin interface
in Netscape's handbook.
- 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 npname.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.