Share this page 

Detect plugins presenceTag(s): Varia


There is no portable way to do it on all browsers. On Netscape, it's very straightforward. All we need is to check plugins property.

For example, to detect if the RealPlayer is installed :

<SCRIPT>
numPlugins = navigator.plugins.length;
for (i = 0; i < numPlugins; i++)
{
  plugin = navigator.plugins[i];
  if (plugin.name.substring(0,10)=="RealPlayer")
  {
    alert("You have the RealPlayer Plug-in installed!")
  }
}
</SCRIPT>

With IE, we try to instanciate to corresponding COM object. If the object is null then we assume that the plugin is missing. Again for the RealPlayer :

<SCRIPT LANGUAGE="VBScript">
  on error resume next
  RealPlayerG2 =
   not IsNull(CreateObject("rmocx.RealPlayer G2 Control"))
  RealPlayer5 =
   not IsNull(CreateObject
      ("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)"))
  RealPlayer4 =
   not IsNull(CreateObject
      ("RealVideo.RealVideo(tm) ActiveX Control (32-bit)"))
  if (RealPlayerG2 or RealPlayer5 or RealPlayer4) then
     document.write "RealPlayer Ok"
  else
     document.write "RealPlayer not found"
  end if
</SCRIPT>
For Shockwave, detection will be like :
<SCRIPT LANGUAGE="Javascript">
<!--
// detection for Netscape
var useFlash = navigator.mimeTypes &&
navigator.mimeTypes["application/x-shockwave-flash"] &&
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;
//-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
' detection for IE
On error resume next
useFlash = NOT IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))
//-->
</SCRIPT>

...
<SCRIPT LANGUAGE="Javascript">
<!--
if ( useFlash ) {
   document.write('<CENTER><embed SRC="mything.swf"
              WIDTH="530" HEIGHT="523" align="center" LOOP="true"
              QUALITY="high"></center>');
   }
else {
   document.write('Non-Shockwave');
}
//-->
</SCRIPT>
Here a method to determine which ActiveX name to use.

Let's say we want to detect if the ActiveX object for Acrobat Reader is installed from IE. Start RegEdit, go to HKEY_LOCAL_MACHINE\Software\CLASSES\ and locate the entries for the file extension (pdf) used by Acrobat. The first key value gives the ActiveX object to use with IE, AcroExch.Document, and the second the MIME type to be used with Netscape.

<SCRIPT LANGUAGE="Javascript">
<!--
// detection for Netscape
var useAcrobat = navigator.mimeTypes &&
navigator.mimeTypes["application/pdf"]
//-->
</SCRIPT>
...
<SCRIPT LANGUAGE="VBScript">
<!--
   on error resume next
   useAcrobat = not IsNull(CreateObject("AcroExch.Document"))
   '                can be CreateObject("PDF.PdfCtrl.1") too!
//-->
</SCRIPT>

<SCRIPT>
<!--
   if (useAcrobat)
      document.write("Acrobat reader ok");
   else
      document.write("Acrobat reader not found");
//-->
</SCRIPT>