PDA

View Full Version : [HTML] Reindirizzazione automatica se non c'è il flash player


xChiccOx
22-05-2009, 15:43
E' possibile reindirizzare automaticamente un utente che non ha il flash player installato, alla versione solo in html di un sito?

Hactor
22-05-2009, 16:04
E' possibile reindirizzare automaticamente un utente che non ha il flash player installato, alla versione solo in html di un sito?

Nelle ultime versioni di flash player vengono prodotte automaticamente pagine HTML con il contenuto che serve a te, nel codice prodotto troverai una parte tipo questa


<script language="JavaScript" type="text/javascript">
<!--
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) { // if we've detected an acceptable version
var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
+ 'width="100%" height="100%"'
+ 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
+ '<param name="movie" value="world.swf" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="devicefont" value="true" /><param name="bgcolor" value="#cccccc" />'
+ '<embed src="world.swf" menu="false" quality="high" devicefont="true" bgcolor="#cccccc" '
+ 'width="100%" height="100%" name="world" align="middle"'
+ 'play="true"'
+ 'loop="false"'
+ 'quality="high"'
+ 'allowScriptAccess="sameDomain"'
+ 'type="application/x-shockwave-flash"'
+ 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
+ '<\/embed>'
+ '<\/object>';
document.write(oeTags); // embed the flash movie
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here.'
+ 'This content requires the Macromedia Flash Player.'
+ '<a href=http://www.macromedia.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>

<noscript>
// Provide alternate content for browsers that do not support scripting
// or for those that have scripting disabled.
Alternate HTML content should be placed here. This content requires the Macromedia Flash Player.
<a href="http://www.macromedia.com/go/getflash/">Get Flash</a>
</noscript>



Quello che interessa a te è l'ultimo settore, quello tra i tag NOSCRIPT, là dentro va inserito il codice alternativo o un redirect. ;)

xChiccOx
22-05-2009, 18:18
Nelle ultime versioni di flash player vengono prodotte automaticamente pagine HTML con il contenuto che serve a te, nel codice prodotto troverai una parte tipo questa


<script language="JavaScript" type="text/javascript">
<!--
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) { // if we've detected an acceptable version
var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
+ 'width="100%" height="100%"'
+ 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
+ '<param name="movie" value="world.swf" /><param name="menu" value="false" /><param name="quality" value="high" /><param name="devicefont" value="true" /><param name="bgcolor" value="#cccccc" />'
+ '<embed src="world.swf" menu="false" quality="high" devicefont="true" bgcolor="#cccccc" '
+ 'width="100%" height="100%" name="world" align="middle"'
+ 'play="true"'
+ 'loop="false"'
+ 'quality="high"'
+ 'allowScriptAccess="sameDomain"'
+ 'type="application/x-shockwave-flash"'
+ 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
+ '<\/embed>'
+ '<\/object>';
document.write(oeTags); // embed the flash movie
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here.'
+ 'This content requires the Macromedia Flash Player.'
+ '<a href=http://www.macromedia.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>

<noscript>
// Provide alternate content for browsers that do not support scripting
// or for those that have scripting disabled.
Alternate HTML content should be placed here. This content requires the Macromedia Flash Player.
<a href="http://www.macromedia.com/go/getflash/">Get Flash</a>
</noscript>



Quello che interessa a te è l'ultimo settore, quello tra i tag NOSCRIPT, là dentro va inserito il codice alternativo o un redirect. ;)

Grazie scusa ma non ci ho capito molto leggendo quel codice. :(

Hactor
22-05-2009, 18:24
Non dovresti preoccupartene e gestire solo la parte in <noscript>.
Comunque il codice così non è completo. Altrimenti usa il codice da questa pagina

<html>
<head>

<script language="JavaScript">
<!--
// initialize a variable to test for JavaScript 1.1.
// which is necessary for the window.location.replace method
var javascriptVersion1_1 = false;
// -->
</script>


<script language="JavaScript1.1">
<!--
javascriptVersion1_1 = true;
// -->
</script>


<script language="JavaScript">
<!--

// initialize global variables
var detectableWithVB = false;
var pluginFound = false;


function goURL(daURL) {
// if the browser can do it, use replace to preserve back button
if(javascriptVersion1_1) {
window.location.replace(daURL);
} else {
window.location = daURL;
}
return;
}

function redirectCheck(pluginFound, redirectURL, redirectIfFound) {
// check for redirection
if( redirectURL && ((pluginFound && redirectIfFound) ||
(!pluginFound && !redirectIfFound)) ) {
// go away
goURL(redirectURL);
return pluginFound;
} else {
// stay here and return result of plugin detection
return pluginFound;
}
}

function canDetectPlugins() {
if( detectableWithVB || (navigator.plugins && navigator.plugins.length > 0) ) {
return true;
} else {
return false;
}
}

function detectFlash(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('Shockwave','Flash');
// if not found, try to detect with VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = detectActiveXControl('ShockwaveFlash.ShockwaveFlash.1');
}
// check for redirection
return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectDirector(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('Shockwave','Director');
// if not found, try to detect with VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = detectActiveXControl('SWCtl.SWCtl.1');
}
// check for redirection
return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectQuickTime(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('QuickTime');
// if not found, try to detect with VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = detectQuickTimeActiveXControl();
}
return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectReal(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('RealPlayer');
// if not found, try to detect with VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = (detectActiveXControl('rmocx.RealPlayer G2 Control') ||
detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') ||
detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)'));
}
return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectWindowsMedia(redirectURL, redirectIfFound) {
pluginFound = detectPlugin('Windows Media');
// if not found, try to detect with VisualBasic
if(!pluginFound && detectableWithVB) {
pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
}
return redirectCheck(pluginFound, redirectURL, redirectIfFound);
}

function detectPlugin() {
// allow for multiple checks in a single pass
var daPlugins = detectPlugin.arguments;
// consider pluginFound to be false until proven true
var pluginFound = false;
// if plugins array is there and not fake
if (navigator.plugins && navigator.plugins.length > 0) {
var pluginsArrayLength = navigator.plugins.length;
// for each plugin...
for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {
// loop through all desired names and check each against the current plugin name
var numFound = 0;
for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) {
// if desired plugin name is found in either plugin name or description
if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) ||
(navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) {
// this name was found
numFound++;
}
}
// now that we have checked all the required names against this one plugin,
// if the number we found matches the total number provided then we were successful
if(numFound == daPlugins.length) {
pluginFound = true;
// if we've found the plugin, we can stop looking through at the rest of the plugins
break;
}
}
}
return pluginFound;
} // detectPlugin


// Here we write out the VBScript block for MSIE Windows
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) {
document.writeln('<script language="VBscript">');

document.writeln('\'do a one-time test for a version of VBScript that can handle this code');
document.writeln('detectableWithVB = False');
document.writeln('If ScriptEngineMajorVersion >= 2 then');
document.writeln(' detectableWithVB = True');
document.writeln('End If');

document.writeln('\'this next function will detect most plugins');
document.writeln('Function detectActiveXControl(activeXControlName)');
document.writeln(' on error resume next');
document.writeln(' detectActiveXControl = False');
document.writeln(' If detectableWithVB Then');
document.writeln(' detectActiveXControl = IsObject(CreateObject(activeXControlName))');
document.writeln(' End If');
document.writeln('End Function');

document.writeln('\'and the following function handles QuickTime');
document.writeln('Function detectQuickTimeActiveXControl()');
document.writeln(' on error resume next');
document.writeln(' detectQuickTimeActiveXControl = False');
document.writeln(' If detectableWithVB Then');
document.writeln(' detectQuickTimeActiveXControl = False');
document.writeln(' hasQuickTimeChecker = false');
document.writeln(' Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
document.writeln(' If IsObject(hasQuickTimeChecker) Then');
document.writeln(' If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
document.writeln(' detectQuickTimeActiveXControl = True');
document.writeln(' End If');
document.writeln(' End If');
document.writeln(' End If');
document.writeln('End Function');

document.writeln('</scr' + 'ipt>');
}
// -->
</script>


</head>

<body>

<script language="JavaScript">

document.write('<br><b>Can Detect Plugins:</b> ' + canDetectPlugins() + '<br><br>');

if(canDetectPlugins()) {
document.write('<b>Supports Shockwave for Director:</b> ' + detectDirector() + '<br>' +
'<b>Supports Shockwave Flash:</b> ' + detectFlash() + '<br>' +
'<b>Supports QuickTime:</b> ' + detectQuickTime() + '<br>' +
'<b>Supports RealPlayer:</b> ' + detectReal() + '<br>' +
'<b>Supports Windows Media Player:</b> ' + detectWindowsMedia());
}
</script>

<noscript>
Your browser doesn't support JavaScript, so we can't check for plugins.
</noscript>


</body>
</html>


usando il risultato della funzione detectFlash potrai reindirizzare l'utente alla pagina che vuoi tu.
Le informazioni sono tratte da qui (http://developer.apple.com/internet/webcontent/examples/detectallplugins.shtml) dove c'è la spiegazione completa, anche se quanto detto da me dovrebbe bastare.