spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / javascript / column86


Embedding Movies with Flash, Part II: Basic Properties

Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?

Embedding Multiple Objects

In this column we use an improved version of the JavaScript include file, flashcheck2.js. This JavaScript include file is different from the one we have used in Column 85, flashmoviecheck.js, in that it allows you:

  • To embed multiple Flash objects on the same page.
  • To embed a Flash object using a single line of JavaScript.

We accomplished the first enhancement above by adding a parameter to Flash_embedSWF(). The file flashmoviecheck.js includes a fixed ID (for Internet Explorer) and a fixed NAME (for Netscape Navigator). Both are set to "sonify". Setting a fixed object prevents us from setting two or more Flash objects on the same page. The file flashcheck2.js answers this problem by letting you pass the ID/NAME as the second parameter to Flash_embedSWF(). In this way, you can call Flash_embedSWF() as many times as you want on the same page. The fundamental change is to replace the fixed string "sonify" with a parameter. In document.writeln statements, this is straightforward. In other JavaScript statements, we need to use the eval() function to concatenate between fixed strings and a parameter.

We implemented the second enhancement by returning the Flash object from the function Flash_embedSWF(), instead of generating it in the main program. The function Flash_embedSWF() in flashcheck2.js includes a statement for returning the Flash object to the caller:

return (eval('window.document.'+ id));

Here is flashcheck2.js:

winIEpass = ((navigator.appName.indexOf("Microsoft") != -1)
   && (navigator.appVersion.indexOf("Windows") != -1)) &&
  (parseFloat(navigator.appVersion) >= 4) ? true : false;

NNpass = ((navigator.appName == "Netscape")
   && (navigator.userAgent.indexOf("Mozilla") != -1) &&
  (parseFloat(navigator.appVersion) >= 4) &&
  (navigator.javaEnabled())) ? true : false;

  supportedBrowser = (winIEpass || NNpass) ? true : false;

// check for Flash Plug-in in Mac or Win Navigator.
// Get plug-in version.


minPlayer = 4;
var mySwf;

function Flash_checkForPlugIn() {
  var plugin = (navigator.mimeTypes &&
  navigator.mimeTypes["application/x-shockwave-flash"]) ?
  navigator.mimeTypes["application/x-shockwave-flash"].
  enabledPlugin : 0;
  if (plugin) {
    var pluginversion = parseInt(plugin.description.
  substring(plugin.description.indexOf(".")-1))
    if(pluginversion >= minPlayer) {return true;}
  }
  return false;
}

// vbscript check for Flash ActiveX control in windows IE
if(supportedBrowser && winIEpass) {
  document.write(
    '<script language=VBScript>' + '\n' +
    'Function Flash_checkForActiveX()' + '\n' +
    'Dim hasPlayer, playerversion' + '\n' +
    'hasPlayer = false' + '\n' +
    'playerversion = 10' + '\n' +
    'Do While playerversion >= minPlayer' + '\n' +
    'On Error Resume Next' + '\n' +
    'hasPlayer = (IsObject(CreateObject
      (\"ShockwaveFlash.ShockwaveFlash.\" &
      playerversion & \"\")))' + '\n' +
    'If hasPlayer = true Then Exit Do' + '\n' +
    'playerversion = playerversion - 1' + '\n' +
    'Loop' + '\n' +
    'Flash_checkForActiveX = hasPlayer' + '\n' +
    'End Function' + '\n' +
    '<\/script>'
  );
}



function Flash_checkForMinPlayer() {
  if(!supportedBrowser) return false;
  if(NNpass) return (Flash_checkForPlugIn());
  if(winIEpass) return (Flash_checkForActiveX());
}



function Flash_embedSWF(srcURL, id, swfbgColor) {

  if (!Flash_checkForMinPlayer()) return;

  var defaultColor = (document.bgColor != null) ?
  document.bgColor : "#ffffff";
  var bgcolor = (swfbgColor != null) ? swfbgColor 
  : defaultColor;
  document.writeln(
    '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-
    444553540000"' +
    'codebase="http://active.macromedia.com/flash2/
    cabs/swflash.cab#version=4,0,0,0"' +
    'ID="' + id + '" WIDTH="100%" HEIGHT="100%">' +
    '<PARAM NAME="movie" VALUE="' + srcURL + '">' +
    '<PARAM NAME="quality" VALUE="high">' +
    '<PARAM NAME="wmode" VALUE="transparent">'+
    '<PARAM NAME="autostart" VALUE="false">'+
    '<PARAM NAME="bgcolor" VALUE=' + bgcolor + '>' +
    '<embed src="' + srcURL + '" quality="high"'
    + 'bgcolor="' +
    bgcolor + '"' + 'width="100%" height="100%"' +
    'type="application/x-shockwave-flash" NAME="' + id + '"'
    + 'pluginspage="http://www.macromedia.com/shockwave/
    download/index.cgi?P1_Prod_Version=ShockwaveFlash">
    </embed></OBJECT>');

  eval('window.document.'+ id + '.Rewind()');
  return (eval('window.document.'+ id));
}

function sonified_flash(id, myFrame){
  if(!Flash_checkForMinPlayer()) {return;}
  mySwf = eval('window.document.' + id);
  if (mySwf.PercentLoaded()<100) return

  mySwf.GotoFrame(myFrame);
  mySwf.GotoFrame(0);
}

Next: How to play multiple flash movies

http://www.internet.com

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business


Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: June 18, 2001
Revised: June 18, 2001

URL: http://www.webreference.com/js/column86/2.html