PDA

View Full Version : Browser Sniffer issues



wanapitei
03-09-2008, 02:44 PM
The site I'm developing is using this site's Omnislide (http://www.dynamicdrive.com/dynamicindex1/omnislide/index.htm) JS routine for a navbar. Tested and works with IE7, Firefox, Opera and Safari but renders poorly with IE 6 and likely earlier IEs. And doesn't render at all with IE running on a Mac.

Rather than fiddle with the intricacies of Omnislide with skills which are marginal, I've chosen instead to simply wave off PC users of IE6 and below and to wave off all Mac users with IE. Therefore I'm using this site's Browser Sniffer JS routine to identify both platform and IE versions and then switch the user to an advisory notice.

I've placed the JS Browser Sniffer (http://www.dynamicdrive.com/dynamicindex9/browsersniffer.htm) routine and this test of the variables into site's mtindex.html file. I've placed it in the head; I've placed it in the body; I've tried to just detect a Mac (which is my primary machine). All fails. I'm missing something fundamental.


/* Switch to warning page if IE is being used on a Mac */
if(mac=1 + ie=1){window.location = "http://www.morleychalmers.com/MostlyTheravada/ieMacPage.html";}

/* {window.alert("Mac user");} */

/* Switch to warning page if IE4, 5 or 6 is being used on a PC */
if(win=1 + (ie4=1 | ie5=1 | ie6=1)){window.location = "http://www.morleychalmers.com/MostlyTheravada/iePCPage.html";}


Here's the test site (http://www.morleychalmers.com/MostlyTheravada/mtindex.html). And here's the complete Browser Sniffer code:


<script type="text/javascript">

//CS1.1

var exclude=1;
var agt=navigator.userAgent.toLowerCase();
var win=0;var mac=0;var lin=1;
if(agt.indexOf('win')!=-1){win=1;lin=0;}
if(agt.indexOf('mac')!=-1){mac=1;lin=0;}
var lnx=0;if(lin){lnx=1;}
var ice=0;
var ie=0;var ie4=0;var ie5=0;var ie6=0;var com=0;var dcm;
var op5=0;var op6=0;var op7=0;
var ns4=0;var ns6=0;var ns7=0;var mz7=0;var kde=0;var saf=0;
if(typeof navigator.vendor!="undefined" && navigator.vendor=="KDE"){
var thisKDE=agt;
var splitKDE=thisKDE.split("konqueror/");
var aKDE=splitKDE[1].split("; ");
var KDEn=parseFloat(aKDE[0]);
if(KDEn>=2.2){
kde=1;
ns6=1;
exclude=0;
}
}
else if(agt.indexOf('webtv')!=-1){exclude=1;}
else if(typeof window.opera!="undefined"){
exclude=0;
if(/opera[\/ ][5]/.test(agt)){op5=1;}
if(/opera[\/ ][6]/.test(agt)){op6=1;}
if(/opera[\/ ][7-9]/.test(agt)){op7=1;}
}
else if(typeof document.all!="undefined"&&!kde){
exclude=0;
ie=1;
if(typeof document.getElementById!="undefined"){
ie5=1;
if(agt.indexOf("msie 6")!=-1){
ie6=1;
dcm=document.compatMode;
if(dcm!="BackCompat"){com=1;}
}
}
else{ie4=1;}
}
else if(typeof document.getElementById!="undefined"){
exclude=0;
if(agt.indexOf("netscape/6")!=-1||agt.indexOf("netscape6")!=-1){ns6=1;}
else if(agt.indexOf("netscape/7")!=-1||agt.indexOf("netscape7")!=-1){ns6=1;ns7=1;}
else if(agt.indexOf("gecko")!=-1){ns6=1;mz7=1;}
if(agt.indexOf("safari")!=-1 || (typeof document.childNodes!="undefined" && typeof document.all=="undefined" && typeof navigator.taintEnabled=="undefined")){mz7=0;ns6=1;saf=1;}
}
else if((agt.indexOf('mozilla')!=-1)&&(parseInt(navigator.appVersion)>=4)){
exclude=0;
ns4=1;
if(typeof navigator.mimeTypes['*']=="undefined"){
exclude=1;
ns4=0;
}
}
if(agt.indexOf('escape')!=-1){exclude=1;ns4=0;}
if(typeof navigator.__ice_version!="undefined"){exclude=1;ie4=0;}

/* Switch to warning page if IE is being used on a Mac */
if(mac=1 + ie=1){window.location = "http://www.morleychalmers.com/MostlyTheravada/ieMacPage.html";}

/* {window.alert("Mac user");} */

/* Switch to warning page if IE4, 5 or 6 is being used on a PC */
if(win=1 + (ie4=1 | ie5=1 | ie6=1)){window.location = "http://www.morleychalmers.com/MostlyTheravada/iePCPage.html";}
</script>

Assistance appreciated.