QuickTime Plugin Detector




Detecting the genuine QuickTime plugin

When PluginDetect is trying to detect the QuickTime plugin, it will try to ignore any 3rd party plugins that masquerade as QuickTime. The purpose here is to make sure that the real QuickTime plugin is present. After all, a 3rd party imitator will most likely not have all the same capabilities as QuickTime.

For instance, QuickTime does not run under Linux. There are, however, a few 3rd party plugins (ie. Totem, VLC, etc...) under Linux that can play many kinds of QuickTime content. They often mimic QuickTime in the browser navigator array so that the plugin detectors believe that QuickTime is installed.

The problem here is that VLC and Totem cannot play QuickTime VR (QTVR) content. If you wanted to play QuickTime VR in a browser (using the QuickTime plugin), you would want to detect whether the genuine QuickTime plugin was present or not.

For this reason, PluginDetect tries to filter out the 3rd party plugins when detecting QuickTime.

If you want to detect the QuickTime plugin, you can use the following code:

var QTInstalled = PluginDetect.isMinVersion('QuickTime', '0') >= 0 ? true : false;
var QTVersion = PluginDetect.getVersion('QuickTime');
var canPlayQTVR = PluginDetect.isMinVersion('QuickTime', '5,0,5') == 1 ? true : false;


I believe that QuickTime 5.05 or higher is capable of playing QuickTime VR movies. Hence the canPlayQTVR variable depends on the '5,0,5' input argument.

Note: QuickTime on iPad/Safari does not seem to support QTVR, yet it is still the genuine Quickime plugin. QuickTime on iPad/Safari does not reveal the plugin version either, and thus for the iPad we would have isMinVersion('QuickTime', '5,0,5') returning 0. Hence the code "PluginDetect.isMinVersion('QuickTime', '5,0,5') == 1 ? true: false" correctly evaluates to 'false' for the iPad.



Detecting genuine QuickTime or 3rd party compatible plugin

Let us suppose that you embedded a QuickTime video in a web page. Let's also say that both the genuine QuickTime plugin and the 3rd party plugins (VLC, Totem, etc...) are able to play your video. Under Linux, your QuickTime video could play with VLC or Totem. And under Windows or Mac OSX, it could play with the QuickTime plugin.

In this case, you would not care whether the genuine QuickTime plugin or a 3rd party plugin was being used to view the video. All you would care about is that your video can play on as many computers and platforms as possible.

Which means that we want to detect whether QuickTime and/or a 3rd party compatible plugin is installed in your browser. So how do we do the plugin detection here?

If the QuickTime video has a mimetype of 'video/quicktime', then all we have to do for any non-Internet Explorer browser is verify that the 'video/quicktime' mimetype is present and enabled. For Internet Explorer, we use the usual PluginDetect methods. The code is as follows:

var canPlayQTvideo = PluginDetect.isMinVersion('QuickTime', '0') >= 0 ||
      PluginDetect.hasMimeType('video/quicktime') ? true : false;

The PluginDetect.hasMimeType(mt) method is useful if a 3rd party plugin is being used to play the video. The hasMimeType(mt) method will return the mimetype object if the specified mimetype is present and enabled in the browser. Just choose the appropriate input value for mt.



Detection for Internet Explorer 7+

For Internet Explorer 7+, we have to worry about those yellow security bar popups when doing QuickTime detection. These popups occur whenever we use an ActiveX control that the browser deems unsafe and that the user has never explicitly approved. By default, most ActiveX controls are assumed to be unsafe by IE 7+.

In order to do QuickTime detection, however, we must utilize one or more ActiveX controls. The trick here is to only use pre-approved controls that never cause any security popup to occur.

For Internet Explorer 7+, there are 2 pre-approved QuickTime ActiveX controls. These 2 controls will not cause any security related warning messages to appear in the browser. They are:

A)  {02BF25D5-8C17-4B23-BC80-D3488ABDDC6B}
This is the classid for the <object> tag when embedding a QuickTime movie into a web page.

B)  {4063BE15-3B08-470D-A0D5-B37161CFFD69}
This is the classid for ActiveXObject("QuickTime.QuickTime").
It can be used to determine whether QuickTime is installed or not. It cannot reveal the installed plugin version.

There is one other ActiveX control, namely ActiveXObject("QuickTimeCheckObject.QuickTimeCheck.1"). With it one can determine the installed QuickTime plugin version. However, this control is not pre-approved for IE 7+. It will cause a security message popup to occur when it is instantiated for the very first time. Microsoft does not recommend that you use it. I don't either, since we cannot know for certain whether a user will allow the control to run.

PluginDetect only uses the 2 pre-approved controls (above) to detect QuickTime in IE 7+.



Back to main page