Solved

Help Detecting Real Player in a Browser

Posted on 2006-04-12
6
274 Views
Last Modified: 2013-11-18
I found a handy little script that performs plugin detection within IE and Netscape.  It seems simple enough but I cannot get it to work.  It just doesn't return anything.

The script can be found here:

http://www.javascriptkit.com/script/script2/plugindetect.shtml

The page I included it on for testing purposes can be found here:

http://www.wbspenguins.com/video/detect.asp

The plugin.js file is located:

http://www.wbspenguins.com/video/plugins.js


Any help is appreciated as I am sure its a two minute fix for the more knowledgeable

Ken
0
Comment
Question by:Supertacks
  • 3
  • 2
6 Comments
 
LVL 2

Expert Comment

by:pashik
ID: 16443588
Hi.
better take this script:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<script language="JavaScript">
/*
Plugin Detector()

Source: Webmonkey Code Library
(http://www.hotwired.com/webmonkey/javascript/code_library/)
Author: Nadav Savio
Author Email: webmonkey@giantant.com
*/
// this is where we write out the VBScript for MSIE Windows
var WM_startTagFix = '</';
var msie_windows = 0;
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)){
  msie_windows = 1;
  document.writeln('<script language="VBscript">');
  document.writeln('\'This will scan for plugins for all versions of Internet Explorer that have a VBscript engine version 2 or greater.');
  document.writeln('\'This includes all versions of IE4 and beyond and some versions of IE 3.');
  document.writeln('Dim WM_detect_through_vb');
  document.writeln('WM_detect_through_vb = 0');
  document.writeln('If ScriptEngineMajorVersion >= 2 then');
  document.writeln('  WM_detect_through_vb = 1');
  document.writeln('End If');
  document.writeln('Function WM_activeXDetect(activeXname)');
  document.writeln('  on error resume next');
  document.writeln('  If ScriptEngineMajorVersion >= 2 then');
  document.writeln('     WM_activeXDetect = False');
  document.writeln('     WM_activeXDetect = IsObject(CreateObject(activeXname))');
  document.writeln('     If (err) then');
  document.writeln('        WM_activeXDetect = False');
  document.writeln('     End If');
  document.writeln('   Else');
  document.writeln('     WM_activeXDetect = False');
  document.writeln('   End If');
  document.writeln('End Function');
  document.writeln(WM_startTagFix+'script>');
}

function WM_pluginDetect(plugindescription, pluginxtension, pluginmime, activeXname){
  //This script block will test all user agents that have a real plug-in array
  //(i.e. Netscape) and set the variables, otherwise it directs the routine
  // to WM_activeXDetect to detect the activeX control.
  // First define some variables
  var i,plugin_undetectable=0,detected=0, daPlugin=new Object();
  // Then we check to see if it's an MSIE browser that you can actually
  // check for the plugin in question.
  if (msie_windows && WM_detect_through_vb){
      plugin_undetectable = 0;
  } else {
      plugin_undetectable = 1;
  }
  // If it has a real plugins or mimetypes array, we look there for the plugin first
  if(navigator.plugins) {
      numPlugins = navigator.plugins.length;
      if (numPlugins > 1) {
        if (navigator.mimeTypes && navigator.mimeTypes[pluginmime] && navigator.mimeTypes[pluginmime].enabledPlugin && (navigator.mimeTypes[pluginmime].suffixes.indexOf(pluginxtension) != -1)) { // seems like we have it, let's just make sure and check the version (if specified)
            if ((navigator.appName == 'Netscape') && (navigator.appVersion.indexOf('4.0') != -1)) { // stupid, stupid Netscape can't handle the references to navigator.plugins by number, sooo...
              for(i in navigator.plugins) {
                  if ((navigator.plugins[i].description.indexOf(plugindescription) != -1) || (i.indexOf(plugindescription) != -1)) { // some versions of quicktime have no description. feh!
                    detected=1;
                    break;
                  }
              }
            } else {
              for (i = 0; i < numPlugins; i++) {
                  daPlugin = navigator.plugins[i];
                  if ((daPlugin.description.indexOf(plugindescription) != -1) || (daPlugin.name.indexOf(plugindescription) != -1)) {
                    detected=1;
                    break;
                  }
              }
            }
            // Mac weirdness
      if (navigator.mimeTypes[pluginmime] == null) {
              detected = 0;
            }
        }
        return detected;
      } else if((msie_windows == 1) && !plugin_undetectable){
        return WM_activeXDetect(activeXname);
      } else {             
        return 0;
      }
  } else {
      return 0;
  }
}


// this next function just makes it easy to detect the common plugins
function WM_easyDetect(whichPlugin) {
    // this function just makes it easy to do basic plug-in detection without
    // knowing all the mimetypes and activeX names and such
    var isItThere = 0;
    if( (whichPlugin == 'flash') || (whichPlugin == 'Flash') ) {
      isItThere = WM_pluginDetect('Flash', 'swf', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash');
    } else if( (whichPlugin == 'director') || (whichPlugin == 'Director') ) {
      isItThere = WM_pluginDetect('Shockwave', 'dcr', 'application/x-director', 'SWCtl.SWCtl.1');
    } else if( (whichPlugin == 'quicktime') || (whichPlugin == 'Quicktime') || (whichPlugin == 'QuickTime') ) {
      isItThere = WM_pluginDetect('QuickTime', 'mov', 'video/quicktime', '');
    } else if( (whichPlugin == 'realaudio') || (whichPlugin == 'Realaudio') || (whichPlugin == 'RealAudio') ) {
      isItThere = (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','rmocx.RealPlayer G2 Control')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealVideo.RealVideo(tm) ActiveX Control (32-bit)'))
    } else {

      alert('You need to tell me which plug-in to look for, like so:\n\n' + '          WM_easyDetect(\'flash\')\n\n' + '          WM_easyDetect(\'director\')\n\n' + '          WM_easyDetect(\'quicktime\')\n\n' + '          WM_easyDetect(\'realaudio\')');
    }
    return isItThere;
}
</script>
<body>

<script language="JavaScript">
if(WM_easyDetect('realaudio')){
  document.write("You have Real");
  }
else{
  document.write("You havn't Real");
  }
</script>
</body>
</html>
0
 

Author Comment

by:Supertacks
ID: 16445367
I tried that script but am getting the follwoing error:

Active Server Pages error 'ASP 0138'

Nested Script Block

/video/detect2.asp, line 20

A script block cannot be placed inside another script block.


This is where I start to fall apart when it comes to coding.

0
 

Author Comment

by:Supertacks
ID: 16445376
0
 
LVL 2

Accepted Solution

by:
pashik earned 250 total points
ID: 16451801
I see.
That script create VBScript (it write script into document) in ASP page.
ASP page also uses VBScript.
so try to replace 20 line with: document.writeln('<script>');
0
 
LVL 2

Expert Comment

by:pashik
ID: 16452360
so try to write it in separate js file and include it in ur page with
<script src="mysqcript.js" type="text/javascript"></script>
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Shoutout to Emily Plummer (http://www.experts-exchange.com/members/eplummer26.html) for giving me this article! She did most of it, I just finished it up and posted it for her :)    Introduction In a previous article (http://www.experts-exchang…
I found this questions asking how to do this in many different forums, so I will describe here how to implement a solution using PHP and AJAX. The logical flow for the problem should be: Write an event handler for the first drop down box to get …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now