allez , chuis vraiment sympa et je vais en faire profiter à tout le monde de mon truc pourri
mon but était de faire un truc qui prenne des décision au cas où tel ou tel navigateur bogue sur du flash ... ou sur les versions différentes etc....
bref, truc sympa...et là ça marche nickel, j'ai testé sur mozilla, netscape, opéra, ie, sur Mac et sur Windoze
bref....voilà les sources:
structure:
index.html
js/isNav.js
js/isVer.js
js/win_isVer.vbs
js/decisions.js
les fichiers en question :
fichier index.html
Code :
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <HTML>
- <HEAD>
- <script language="Javascript">
- //MODIFIER ICI LES VARIABLES
- var version = 3; //la version flash de l'animation
- var compatible_avec = "win.ns|aze.aze|mac.ie|win.ie|aze.aze|win.op3"; //les différentes couples os/navigateur
- var url_bad_version = "version.html"; //l'url à appeler dans le cas d'une mauvaise version de flash
- var url_bad_nav = "navigateur.html"; //l'url à appeler dans le cas d'un navigateur non listé dans compatible_avec
- var url_ok = "ok.html"; //l'url à appeler si tout se passe bien
- ////////////////////////////
- var to_end = "faux";
- var url_finale = "";
- </script>
- <script language="Javascript" src="js/isNav.js"></script>
- <script language="Javascript" src="js/isVer.js"></script>
- <script language="VBScript" src="js/win_isVer.vbs"></script>
- <script language="Javascript" src="js/decisions.js"></script>
- </HEAD>
- <BODY>
- ici mettre rien
- </BODY>
- </HTML>
|
ficheir js/isNav.js
Code :
- if (to_end == "faux" )
- {
- function Is() {
- var agent = navigator.userAgent.toLowerCase();
- this.major = parseInt(navigator.appVersion);
- this.minor = parseFloat(navigator.appVersion);
- this.ns = ((agent.indexOf('mozilla')!=-1) && ((agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') == -1)));
- this.ns2 = (this.ns && (this.major == 3));
- this.ns3 = (this.ns && (this.major == 3));
- this.ns4b = (this.ns && (this.minor < 4.04));
- this.ns4 = (this.ns && (this.major >= 4));
- this.ie = (agent.indexOf("msie" ) != -1);
- this.ie3 = (this.ie && (this.major == 2));
- this.ie4 = (this.ie && (this.major >= 4));
- this.op3 = (agent.indexOf("opera" ) != -1);
- this.win = (agent.indexOf("win" )!=-1);
- this.mac = (agent.indexOf("mac" )!=-1);
- this.unix = (agent.indexOf("x11" )!=-1);
- }
- var is = new Is();
- var cclient = compatible_avec.split("|" );
- var result = false;
- for (n=0; n<cclient.length;n++)
- {
- var v1 = cclient[n].split("." );
- if ( eval("is."+v1[0]) && eval("is."+v1[1]) )
- result = true;
- }
- //alert("navigateur compatible : "+result);
- if (!result) {url_finale = url_bad_nav;to_end = "vrai";}
- }
|
fichier js/isVer.js
Code :
- if (to_end == "faux" )
- {
- if (navigator.plugins && (navigator.plugins.length > 0) )
- {
- var tmp;
- var app = "Shockwave Flash";
- for (i=0; i<navigator.plugins.length ; i++ )
- {if (navigator.plugins[i].name == app) {tmp = navigator.plugins[i].description ;}}
- pt1 = tmp.indexOf(app) + app.length;pt2 = tmp.indexOf(" ",pt1+1);
- tmp = tmp.substring(pt1,pt2);
- if ( (parseInt(tmp) == tmp) || (parseFloat(tmp) == tmp) )
- {tmp = parseInt(tmp);}
- else
- {tmp = 0;}
- if (tmp < version)
- {url_finale = url_bad_version;to_end = "vrai";}
- else
- {url_finale = url_ok;to_end = "vrai";}
- }
- }
|
fichier js/win_isVer.vbs
Code :
- 'nécessite la variable version définie dans l'appellant
- if to_end = "faux" then
- on error resume next
- FlashInstalled = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash."&version)))
- If (FlashInstalled) then
- url_finale = url_ok
- to_end = "vrai"
- Else
- url_finale = url_bad_version
- to_end = "vrai"
- End If
- end if
|
fichier js/decisions.js
Code :
- if (to_end == "vrai" )
- {
- alert("url_finale = "+url_finale);
- }
|
bref, il reste à faire décisions.js mieux,
mais c cool, c super paramétrable et très simple à utiliser !!
voilà, profitez en bien !
et au fait, n'hésitez pas à faire évoluer le truc et me dire si ya des bogues ou des trucs pas corrects! siouplé!!! j'aimerais en faire une version définitive!
[edtdd]--Message édité par k666--[/edtdd]