Forum de discussion
Forum « Programmation Javascript » (archives)
Re: Prob. avec kit de déploiement Macromedia Flash
Envoyé: 31 juillet 2003, 8h42 par bert
Si je comprends bien ta réponse, peu importe le type de redirection utilisée dans une page web, le bouton back ne fonctionne plus !!
Dans ce cas, il est fort probable que l'on ne puisse rien faire :(( car mon client ne veux pas avoir de lien sur sa page pour faire un back-2 !!
Néanmoins, voici tout de même le code de la page de détection (redirection):
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-1">
<title>index</title>
<META http-equiv="Content-Script-Type" content="text/javascript">
<SCRIPT TYPE="text/javascript" SRC="Dispatcher.js"></SCRIPT>
<SCRIPT LANGUAGE="VBScript" SRC="Dispatcher.vbs"></SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<SCRIPT LANGUAGE="JavaScript">
MM_FlashDispatch(
"entrer.htm",
"6.0",
true, // require latest rev. of plug-in
"upgradeFlash.html",
!MM_FlashUserDemurred(), // don't install if user said no once
"upgradeFlash.html",
"entrer.htm",
false,
true // disable auto-install
);
</SCRIPT>
</BODY>
</HTML>
Voici également le code de fichier Dispatcher.vbs et Dispatcher.js :
DISPATCHER.VBS
' Check for the Flash ActiveX control.
'
' This script will be ignored by browsers that do not support
' VBScript (although Microsoft Internet Explorer will warn the
' user that a script in an unsupported language has been
' encountered if the user has checked "Show unsupported scripting
' language errors" in Preferences->Web Browser->Web Content).
'
' This technique due to Jeff Brown and Rafael M. Muñoz of
' Microsoft Corporation. Version testing adapted from Macromedia
' Flash Technical Note #12853.
Private i, x
On Error Resume Next
MM_FlashControlInstalled = False
For i = 6 To 1 Step -1
Set x = CreateObject("ShockwaveFlash.ShockwaveFlash." & i)
MM_FlashControlInstalled = IsObject(x)
If MM_FlashControlInstalled Then
MM_FlashControlVersion = CStr(i)
Exit For
End If
Next
DISPATCHER.JS
/*
* URL of the Flash self-detecting movie ("sniffer").
*
* Reset this if you move the file out of the directory in which the
* document containing the script that calls MM_FlashDispatch() resides.
*/
var MM_FlashSnifferURL = "detectFlash.swf";
/*
* Latest available revisions of the Plug-in.
*/
var MM_latestPluginRevision = new Object();
MM_latestPluginRevision["6.0"] = new Object();
MM_latestPluginRevision["5.0"] = new Object();
MM_latestPluginRevision["4.0"] = new Object();
MM_latestPluginRevision["3.0"] = new Object();
MM_latestPluginRevision["2.0"] = new Object();
/*
* This table must be updated as new versions and revisions of the
* plug-in are released, in support of the 'requireLatestRevision'
* option in MM_FlashDispatch().
*/
MM_latestPluginRevision["6.0"]["Windows"] = 65;
MM_latestPluginRevision["6.0"]["Macintosh"] = 65;
MM_latestPluginRevision["6.0"]["Unix"] = 69;
MM_latestPluginRevision["5.0"]["Windows"] = 42;
MM_latestPluginRevision["5.0"]["Macintosh"] = 41;
MM_latestPluginRevision["5.0"]["Unix"] = 51;
MM_latestPluginRevision["4.0"]["Windows"] = 28;
MM_latestPluginRevision["4.0"]["Macintosh"] = 27;
MM_latestPluginRevision["4.0"]["Unix"] = 12;
MM_latestPluginRevision["3.0"]["Windows"] = 10;
MM_latestPluginRevision["3.0"]["Macintosh"] = 10;
MM_latestPluginRevision["2.0"]["Windows"] = 11;
MM_latestPluginRevision["2.0"]["Macintosh"] = 11;
/*
* MM_FlashInfo() -- construct an object representing Flash Player status
*
* Constructor:
*
* new MM_FlashInfo()
*
* Properties:
*
* installed true if player is installed
* (undefined if undetectable)
*
* implementation the form the player takes in this
* browser: "ActiveX control" or "Plug-in"
*
* autoInstallable true if the player can be automatically
* installed/updated on this browser/platform
*
* version player version if installed
*
* revision revision if implementation is "Plug-in"
*
* Methods:
*
* canPlay(contentVersion) true if installed player is capable of
* playing content authored with the
* specified version of Flash software
*
* Description:
*
* MM_FlashInfo() instantiates an object that contains as much
* information about Flash Player--whether it is installed, what
* version is installed, and so one--as is possible to collect.
*
* Where Flash Player is implemented as a plug-in and the user's
* browser supports plug-in detection, all properties are defined;
* this includes Netscape on all platforms and Microsoft Internet
* Explorer 5 on the Macintosh. Where Flash Player is implemented
* as an ActiveX control (MSIE on Windows), all properties except
* 'revision' are defined.
*
* Prior to version 5, Microsoft Internet Explorer on the Macintosh
* did not support plug-in detection. In this case, no properties
* are defined, unless the cookie 'MM_FlashDetectedSelf' has been
* set, in which case all properties except 'version' and 'revision'
* are set.
*
* This object is primarily meant for use by MM_FlashDispatch(), but
* may be of use in reporting the player version, etc. to the user.
*/
var MM_FlashControlInstalled; // is the Flash ActiveX control installed?
var MM_FlashControlVersion; // ActiveX control version if installed
function MM_FlashInfo()
{
if (navigator.plugins && navigator.plugins.length > 0)
{
this.implementation = "Plug-in";
this.autoInstallable = false; // until Netscape SmartUpdate supported
// Check whether the plug-in is installed:
if (navigator.plugins["Shockwave Flash"])
{
this.installed = true;
// Get the plug-in version and revision:
var words =
navigator.plugins["Shockwave Flash"].description.split(" ");
for (var i = 0; i < words.length; ++i)
{
if (isNaN(parseInt(words[i])))
continue;
this.version = words[i];
this.revision = parseInt(words[i + 1].substring(1));
}
}
else
{
this.installed = false;
}
}
else if (MM_FlashControlInstalled != null)
{
this.implementation = "ActiveX control";
this.installed = MM_FlashControlInstalled;
this.version = MM_FlashControlVersion;
this.autoInstallable = true;
}
else if (MM_FlashDetectedSelf())
{
this.installed = true;
this.implementation = "Plug-in";
this.autoInstallable = false;
}
this.canPlay = MM_FlashCanPlay;
}
/*
* MM_FlashDispatch() -- get Flash Player status and redirect appropriately
*
* Synopsis:
*
* MM_FlashDispatch(contentURL, contentVersion, requireLatestRevision,
* upgradeURL, install, installURL, altURL,
* overridePluginsPage)
*
* Arguments:
*
* contentURL URL of document containing Flash content
*
* contentVersion version of Flash software used to
* author content
*
* requireLatestRevision Boolean indicating whether to require
* latest revision of player (plug-in only)
*
* upgradeURL document to load if player must be
* upgraded to play content and automated
* updating is not supported on the user's
* browser & platform
*
* install Boolean indicating whether to install
* if player is not installed
*
* installURL document to load if 'install' is true
* and automated installation is not
* supported on user's browser & platform
*
* altURL document to load if 'install' is false
*
* overridePluginsPage Boolean indicating whether to set the
* PLUGINSPAGE attribute for the embedded
* Flash Player sniffer to `installURL'
* disableAutoInstall Boolean indicating that the auto-installation
* should not occur and that the user will go to the installURL
* or to the upgradeURL as specified
*
* Returns:
*
* Normally, never returns; changes window.location.
* Returns with no value when called improperly.
*
* Description:
*
* MM_FlashDispatch() detects whether the user's Web browser has the
* Flash plug-in or ActiveX control installed, and what version is
* installed if so. It then takes appropriate action based on whether
* Flash Player is installed and is compatible with 'contentVersion':
* load a document containing Flash content, load alternate content,
* or oversee the updating or installation of the player.
*
* There are three possible outcomes of the detection process:
*
* 1. A version of Flash Player has been detected that is
* suitable for playing the requested content version.
* MM_FlashDispatch() will load 'contentURL'.
*
* 2. An unsuitable version of Flash Player has been detected.
* MM_FlashDispatch() will load 'contentURL' if automated
* updating is supported on the user's browser & platform;
* otherwise, it will load 'upgradeURL'.
*
* 3. Flash Player is not installed. If 'install' is set to
* true, MM_FlashDispatch() will load 'contentURL' if the
* user's browser supports automated installation; otherwise,
* it will load 'installURL'. If 'install' is false,
* MM_FlashDispatch() will load 'altURL'.
*
* When script-based detection of Flash Player is not possible,
* MM_FlashDispatch() attempts to load a Flash movie to carry out
* the detection. If Flash Player is not installed, there is presently
* no choice but to let the browser redirect the user via the
* PLUGINSPAGE attribute of the EMBED tag. In this case, 'install'
* is ignored, but setting 'overridePluginsPage' to true will
* set PLUGINSPAGE to 'installURL', overriding its default value
* (the URL for the Macromedia Flash download center). If this flag
* is set, 'installURL' must be absolute, not relative.
*/
var MM_FlashPluginsPage = "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";
function MM_FlashDispatch(contentURL, contentVersion, requireLatestRevision,
upgradeURL, install, installURL, altURL,
overridePluginsPage,disableAutoInstall)
{
if (disableAutoInstall == null)
{
alert("ERROR: MM_FlashDispatch() called with too few arguments.");
return;
}
if (overridePluginsPage && installURL.substring(0, 7) != "http://")
{
alert("ERROR: MM_FlashDispatch() called with relative URL" +
" for PLUGINSPAGE (" + installURL + ")");
return;
}
var player = new MM_FlashInfo();
if (player.installed == null)
{
var sniffer =
"<EMBED HIDDEN=\"true\" TYPE=\"application/x-shockwave-flash\"" +
" WIDTH=\"18\" HEIGHT=\"18\"" +
" BGCOLOR=\"" + document.bgcolor + "\"" +
" SRC=\"" + MM_FlashSnifferURL +
"?contentURL=" + contentURL + "?" +
"&contentVersion=" + contentVersion +
"&requireLatestRevision=" + requireLatestRevision +
"&latestRevision=" +
MM_FlashLatestPluginRevision(contentVersion) +
"&upgradeURL=" + upgradeURL +
"\"" +
" LOOP=\"false\" MENU=\"false\"" +
" PLUGINSPAGE=\"" +
(overridePluginsPage ? installURL : MM_FlashPluginsPage) +
"\"" +
">" +
"</EMBED>";
document.open();
document.write("<HTML><HEAD><TITLE>");
document.write("Checking for the Flash Player");
document.write("</TITLE></HEAD>");
document.write("<BODY BGCOLOR=\"" + document.bgcolor + "\">");
document.write(sniffer);
document.write("</BODY>");
document.write("</HTML>");
document.close();
}
else if (player.installed)
{
if (player.canPlay(contentVersion, requireLatestRevision))
{
location = contentURL;
}
else
{
if (disableAutoInstall)
{
location = upgradeURL;
}else
{
location = player.autoInstallable ? contentURL : upgradeURL;
}
}
}
else if (install)
{
if (disableAutoInstall){
location = installURL;
}
else{
location = player.autoInstallable ? contentURL : installURL;
}
}
else
{
location = altURL;
}
}
/*
* MM_FlashRememberIfDetectedSelf() -- record that Flash Player detected itself
*
* Synopsis:
*
* MM_FlashRememberIfDetectedSelf()
* MM_FlashRememberIfDetectedSelf(count)
* MM_FlashRememberIfDetectedSelf(count, units)
*
* Arguments:
*
* count length of time in units before re-checking
* whether content can be played (default: 60)
*
* units unit(s) of time to count: "minute(s)," "hour(s)"
* or "day(s)" (default: "days")
*
*
* Description:
*
* This function conditionally sets a cookie signifying that
* the current document was referred via the Dispatcher using
* Flash Player self-detection. It is intended to spare the user
* whose browser does not support script-based detection from the
* process of Flash Player self-detection on each visit.
*
* The cookie persists for 60 days, or for the amount of time
* specified by the 'count' and 'units' parameters.
*
* If cookies are not being accepted, this function is a no-op;
* the Dispatcher will simply attempt Flash Player self-detection
* on subsequent visits.
*
* This function must be called from a script embedded in the
* document referenced by the 'contentURL' argument to
* MM_FlashDispatch().
*
*/
function MM_FlashRememberIfDetectedSelf(count, units)
{
// the sniffer appends an empty search string to the URL
// to indicate that it is the referrer
if (document.location.search.indexOf("?") != -1)
{
if (!count) count = 60;
if (!units) units = "days";
var msecs = new Object();
msecs.minute = msecs.minutes = 60000;
msecs.hour = msecs.hours = 60 * msecs.minute;
msecs.day = msecs.days = 24 * msecs.hour;
var expires = new Date();
expires.setTime(expires.getTime() + count * msecs[units]);
document.cookie =
'MM_FlashDetectedSelf=true ; expires=' + expires.toGMTString();
}
}
/*
* MM_FlashDemur() -- record user's decision not to install Flash Player
*
* Synopsis:
*
* MM_FlashDemur()
* MM_FlashDemur(count)
* MM_FlashDemur(count, units)
*
* Arguments:
*
* count length of time in units to remember decision
* (default: 60)
*
* units unit(s) of time to count: "minute(s)," "hour(s)"
* or "day(s)" (default: "days")
*
* Returns:
*
* true if successful; false otherwise.
*
* Description:
*
* MM_FlashDemur() sets a cookie signifying that the user requested
* that the decision not to install Flash be remembered.
*
* The cookie persists for 60 days, or for the amount of time
* specified by the 'count' and 'units' parameters.
*
* This function may be used as the handler for the 'onClick' event
* associated with the user's selecting a link to alternate content.
* If cookies are not being accepted, it will return false; this
* may be used to control whether the link is followed.
*/
function MM_FlashDemur(count, units)
{
if (!count) count = 60;
if (!units) units = "days";
var msecs = new Object();
msecs.minute = msecs.minutes = 60000;
msecs.hour = msecs.hours = 60 * msecs.minute;
msecs.day = msecs.days = 24 * msecs.hour;
var expires = new Date();
expires.setTime(expires.getTime() + count * msecs[units]);
document.cookie =
'MM_FlashUserDemurred=true ; expires=' + expires.toGMTString();
if (!MM_FlashUserDemurred())
{
alert("Your browser must accept cookies in order to " +
"save this information. Try changing your preferences.");
return false;
}
else
return true;
}
/*
* MM_FlashUserDemurred() -- recall user's decision not to install Flash Player
*
* Synopsis:
*
* MM_FlashUserDemurred()
*
* Returns:
*
* true if a cookie signifying that the user declined to install
* Flash Player is set; false otherwise.
*
* Description:
*
* This function is useful in determining whether to set the 'install'
* flag when calling MM_FlashDispatch(). If true, it means that the
* user's previous decision not to install Flash Player should be
* honored, i.e., 'install' should be set to false.
*/
function MM_FlashUserDemurred()
{
return (document.cookie.indexOf("MM_FlashUserDemurred") != -1);
}
/*********************************************************************
* THE FOLLOWING FUNCTIONS ARE NOT PUBLIC. DO NOT CALL THEM DIRECTLY.
*********************************************************************/
/*
* MM_FlashLatestPluginRevision() -- look up latest Flash Player plug-in
* revision for this platform
*
* Synopsis:
*
* MM_FlashLatestPluginRevision(playerVersion)
*
* Arguments:
*
* playerVersion plug-in version to look up revision of
*
* Returns:
*
* The latest available revision of the specified version of
* the Flash Player plug-in on this platform, as an integer;
* undefined for versions before 2.0.
*
* Description:
*
* This look-up function is only intended to be called internally.
*/
function MM_FlashLatestPluginRevision(playerVersion)
{
var latestRevision;
var platform;
if (navigator.appVersion.indexOf("Win") != -1)
platform = "Windows";
else if (navigator.appVersion.indexOf("Macintosh") != -1)
platform = "Macintosh";
else if (navigator.appVersion.indexOf("X11") != -1)
platform = "Unix";
latestRevision = MM_latestPluginRevision[playerVersion][platform];
return latestRevision;
}
/*
* MM_FlashCanPlay() -- check whether installed Flash Player can play content
*
* Synopsis:
*
* MM_FlashCanPlay(contentVersion, requireLatestRevision)
*
* Arguments:
*
* contentVersion version of Flash software used to
* author content
*
* requireLatestRevision Boolean indicating whether latest
* revision of plug-in should be required
*
* Returns:
*
* true if the installed player can play the indicated content;
* false otherwise.
*
* Description:
*
* This function is not intended to be called directly, only
* as an instance method of MM_FlashInfo.
*/
function MM_FlashCanPlay(contentVersion, requireLatestRevision)
{
var canPlay;
if (this.version)
{
canPlay = (parseInt(contentVersion) <= this.version);
if (requireLatestRevision)
{
if (this.revision &&
this.revision < MM_FlashLatestPluginRevision(this.version))
{
canPlay = false;
}
}
}
else
{
canPlay = MM_FlashDetectedSelf();
}
return canPlay;
}
/*
* MM_FlashDetectedSelf() -- recall whether Flash Player has detected itself
*
* Synopsis:
*
* MM_FlashDetectedSelf()
*
* Returns:
*
* true if a cookie signifying that Flash Player has detected itself
* is set; false otherwise.
*
* Description:
*
* This function is only meant to be called internally.
*/
function MM_FlashDetectedSelf()
{
return (document.cookie.indexOf("MM_FlashDetectedSelf") != -1);
}
Réponses
|